在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