在Bash中将空格分隔的字符串读入数组 [英] Reading a space-delimited string into an array in Bash

查看:35
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆