在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