Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

方法一 tr替代字符串然后()转数组

string="hello,shell,split,test"  
array=(`echo $string | tr ',' ' '` )  # tr ',' ' '将string中,替换成空格,然后()转成数组
 
for var in ${array[@]}
do
   echo $var
done 

方法二 IFS

f=interactive-complex-14.rq

ori_IFS=$IFS # for later recovering
IFS='.' # setting . as delimiter  
read -a arr1 <<<"$f" # reading f as an array as tokens separated by IFS  
str=${arr1[0]} 
echo $str # interactive-complex-14

IFS='-' # setting - as delimiter  
read -a arr2 <<<"$str" # reading str as an array as tokens separated by IFS  
echo ${arr2[-1]} # 14

IFS=$ori_IFS # recover

$IFS是一个特殊的内部变量,“内部字段分隔符”,它确定Bash如何识别边界。
空格是$IFS的默认值。

分配定界符后,可以通过两个选项读取字符串:-r和-a。即,read -ra ARR <<< “$str”。
选项-r用于定义反斜杠(),它是字符而不是转义字符。
-a选项用于定义将单词(用$IFS分隔)分配给从零开始的数组顺序索引。

评论