Issue
I'm trying to convert the output of a command like echo -e "a b\nc\nd e"
to an array.
X=( $(echo -e "a b\nc\nd e") )
Splits the input for every new line and whitespace character:
$ echo ${#X[@]}
> 5
for i in ${X[@]} ; do echo $i ; done
a
b
c
d
e
The result should be:
for i in ${X[@]} ; do echo $i ; done
a b
c
d e
Solution
You need to change your Internal Field Separator variable (IFS
) to a newline first.
$ IFS=$'\n'; arr=( $(echo -e "a b\nc\nd e") ); for i in ${arr[@]} ; do echo $i ; done
a b
c
d e
Answered By - SiegeX