在Bash中将分隔string读入数组
我有一个variables,其中包含空格分隔的string:
line="1 1.50 string" 
我想分割该string与空格作为分隔符并将结果存储在一个数组中,以便以下内容:
 echo ${arr[0]} echo ${arr[1]} echo ${arr[2]} 
输出
 1 1.50 string 
某处我find了一个不起作用的解决scheme:
 arr=$(echo ${line}) 
如果在这之后运行上面的echo语句,我会得到:
 1 1.50 string [empty line] [empty line] 
我也试过了
 IFS=" " arr=$(echo ${line}) 
结果相同。 有人可以帮忙吗?
 arr=($line) 
要么
 read -a arr <<<$line 
尝试这个:
 arr=(`echo ${line}`); 
 在: arr=( $line ) 。  “split”与“glob”关联。 
 通配符( * ,?和[] )将被扩展为匹配的文件名。 
正确的解决scheme只是稍微复杂一些:
 IFS=' ' read -a arr <<<"$line" 
 没有混乱的问题; 分隔符被设置在$IFS ,variables被引用。 
 line="1 1.50 string" arr=$( $line | tr " " "\n") for x in $arr do echo "> [$x]" done