我有一个包含空格分隔字符串的变量:
line="1 1.50 string"
我想用空格作为分隔符拆分该字符串并将结果存储在一个数组中,以便如下:
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
输出
1
1.50
string
我在某个地方找到了一个不起作用的解决方案:
arr=$(echo ${line})
如果我在此之后运行上面的 echo 语句,我会得到:
1 1.50 string
[empty line]
[empty line]
我也试过
IFS=" "
arr=$(echo ${line})
同样的结果。有人可以帮忙吗?
最佳答案
为了将字符串转换为数组,从字符串创建一个数组,让字符串根据 IFS
(内部字段分隔符)变量自然拆分,默认为空格字符:
arr=($line)
或者使用 herestring ( read
) 运算符将字符串传递给 <<<
命令的标准输入:
read -a arr <<< "$line"
对于第一个示例,不在 $line
周围使用引号是至关重要的,因为这是允许将字符串拆分为多个元素的原因。
关于arrays - 在 Bash 中将以空格分隔的字符串读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293887/