eval "arr=( $(echo '"test example" "test2 example"') )"
echo "${arr[0]}"
for e in "${arr[@]}"; do
echo "<$e>"
done
saída
test example
<test example>
<test2 example>
Para um script que estou fazendo, preciso converter a saída de um comando em uma matriz. Para simplificar, fiz um exemplo usando echo:
arr=( $(echo '"test example" "test2 example"') )
O que eu quero é o primeiro elemento da matriz a ser
test example
mas ao fazer isso:
echo ${arr[0]}
Eu obtenho
"test
O que tenho que fazer para obter o resultado que quero?
eval "arr=( $(echo '"test example" "test2 example"') )"
echo "${arr[0]}"
for e in "${arr[@]}"; do
echo "<$e>"
done
test example
<test example>
<test2 example>
Suponha que echo não produza saída correta como um comando, por isso, é necessário incluir sed
mapfile -t arr < <(
echo '"test example1" "test2 example2"' |
sed 's/" "/"\n"/g'
)