我正在尝试将像 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/