HowTo:Bash Shell将字符串拆分为数组

时间:2020-01-09 10:45:54  来源:igfitidea点击:

如何在Bash shell下将基于定界符的字符串拆分为数组?
您需要使用$IFS。
这是一个特殊的shell变量。
您可以根据需要更改IFS的值。
内部字段分隔符(IFS),用于在扩展后进行单词拆分,并使用read Builtin命令将行拆分为单词。
默认值为<space> <tab> <newline>
您可以使用以下命令打印它:cat -etv
$IFS变量通常与读取命令,参数扩展和命令替换一起使用。

语法

创建一个名为ns的变量,如下所示:

ns="ns1.theitroad.local ns2.theitroad.local ns3.theitroad.local"

要将$ns变量(字符串)拆分为数组,请使用以下IFS语法:

OIFS="$IFS"
IFS=' '
read -a dnsservers <<< "${ns}"
IFS="$OIFS"

或者按以下方式使用一种衬板:

IFS=' ' read -a dnsservers <<< "${ns}"

要显示存储在数组中的值,请执行:

echo ${dnsservers[0]}

输出示例:

ns1.theitroad.local

使用bash for loop遍历数组值,即使用bash for loop语法打印所有元素:

for i in "${dnsservers[@]}"
do     
   echo "$i"
done