#!/bin/bash
IFS=','
read -ra LIST <<< "$nodes"
IFS=' '
for node in ${LIST[@]}
do
echo $node
done
经常在bash中需要分割字符串,如果不是以空格分割的话,就需要其他手段分割,上面给出了一个比较简单的方案;还有另一种更直接的方式
#!/bin/bash
test="1,2,3,4"
IFS=','
arr=($test)
IFS=' '
for i in ${arr[@]}
do
echo $i
done
这里有一点大家一定要注意,就是分隔符重定义之后一定要复位,默认是以空格为分隔符。否则会造成后面的脚本都以新的分隔符操作
还有另一种比较简单的分割,将原有的分隔符替换为IFS,直接就可以切割字符串,用到的是
${parameter/pattern/string}
${parameter//pattern/string}
${parameter/#pattern/string}
${parameter/%pattern/string}
#!/bin/bash
#str="192.168.255.254"
#array=(${str//\./ })
str="192:168:255:254"
array=(${str//:/ })
for i in "${array[@]}"; do
echo "$i=>${array[i]}"
done
exit