arrays - 如何在 bash 中逐行将命令输出转换为数组?

标签 arrays bash shell

我正在尝试将像 echo -e "a b\nc\nd e" 这样的命令的输出转换为数组。

X=( $(echo -e "a b\nc\nd e") )

为每个新行和空白字符拆分输入:

$ echo ${#X[@]}
> 5

for i in ${X[@]} ; do echo $i ; done
a
b
c
d
e

结果应该是:

for i in ${X[@]} ; do echo $i ; done
a b
c
d e

最佳答案

您需要先将内部字段分隔符 变量 (IFS) 更改为换行符。

$ IFS=$'\n'; arr=( $(echo -e "a b\nc\nd e") ); for i in ${arr[@]} ; do echo $i ; done
a b
c
d e

关于arrays - 如何在 bash 中逐行将命令输出转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8768420/

相关文章:

perl - 如何在Perl中同时遍历多个列表?

linux - 在 bash 中提取位置文件名和扩展名

bash - 如何递归地用变量替换 configure.ac 中 bash 变量中的路径?

linux - sed命令替换字符串不起作用

javascript - 利用 MomentJS 将 30 秒间隔添加到 UTC 字符串

Java 整数流

arrays - 满足以下关系的数组中的最长序列 X[ i ] = X[ i-1 ] + X [ i-2 ]

bash - 设置动态创建的 bash 变量

shell - .zshrc 中的命令未找到

linux - 从两个不同的文本文件中读取并获取每一行列