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

Tho*_*ung 8 arrays bash shell

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

X=( $(echo -e "a b\nc\nd e") )
Run Code Online (Sandbox Code Playgroud)

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

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

for i in ${X[@]} ; do echo $i ; done
a
b
c
d
e
Run Code Online (Sandbox Code Playgroud)

结果应该是:

for i in ${X[@]} ; do echo $i ; done
a b
c
d e
Run Code Online (Sandbox Code Playgroud)

Sie*_*geX 14

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

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