在Bash中将空格分隔的字符串读入数组 [英] Reading a space-delimited string into an array in Bash
本文介绍了在Bash中将空格分隔的字符串读入数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个变量,其中包含空格分隔的字符串:
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
命令的stdin:
read -a arr <<< "$line"
对于第一个示例,重要的是而不是在$line
两边使用引号,因为这样可以将字符串拆分成多个元素。
另请参阅:https://github.com/koalaman/shellcheck/wiki/SC2206
这篇关于在Bash中将空格分隔的字符串读入数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文