'How to convert command output to an array line by line in bash?
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 1:[1]
readarray -t ARRAY < <(COMMAND)
Solution 2:[2]
Set the IFS to newline. By default, it is space.
[jaypal:~] while IFS=$'\n' read -a arry; do
echo ${arry[0]};
done < <(echo -e "a b\nc\nd e")
a b
c
d e
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | jaypal singh |
