Eu tenho um $variable
que tem muitos caminhos entre aspas duplas separados por espaços
echo $variable
"/home/myuser/example of name with spaces" "/home/myuser/another example with spaces/myfile"
O número de caminhos na minha variável pode variar e não é algo sob controle. Pode ser, por exemplo, como os seguintes exemplos:
example 1: "path1" "path2" "path3" "path4"
example 2: "path1" "path2" "path3" "path4" "path5" "path6" path7" "path8"
example 3: "path1" "path2" "path3"
example 4: "path1" "path2" "path3" "path4" "path5" "path6"
Eu quero substituir todos os espaços fora das aspas duplas em uma nova linha ( \n
), preservando os espaços que estão dentro das aspas. Usar echo $variable | tr " " "\n"
like nesta resposta não funciona para mim porque substitui todos os espaços por novas linhas. Como eu posso fazer isso?
Se os elementos estiverem sempre entre aspas duplas, você poderá substituir aspas-espaço-aspas por aspas-nova-linha-aspas:
ou (usando a substituição de parâmetro do shell)
Mas seria mais simples se você pudesse modificar seu script para usar um array: