Bash - Problemas ao criar uma matriz a partir de uma saída de comando que tenha citado texto com espaços

0

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?

    
por mmarquezs 01.04.2017 / 11:40

2 respostas

1

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>
    
por 01.04.2017 / 11:52
0

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'
)
    
por 01.04.2017 / 13:09