Existe uma maneira no bash que podemos usar corretamente a saída de substituição de comando (' COMMAND
' ou $(COMMAND)
) como argumentos para outro programa?
Exemplo:
% touch -- safe-name -name-with-dash-prefix "name with space" \
'name-with-double-quote"' "name-with-single-quote'" \
'name-with-backslash\'
Nem isso:
% ls -l 'ls'
% ls -l $(ls)
nem isso:
% ls -l "'ls'"
% ls -l "$(ls)"
pode realimentar corretamente a saída da substituição de comandos como argumentos, para todos os nomes de amostra. Sem aspas duplas, os nomes com aspas são aceitáveis, mas não os nomes com espaços. Com aspas duplas, o nome com espaços é bom, mas vários nomes são unidos.
Nota: por favor limite a discussão para comandar a legenda (ou seja, sem pipes, mapfile ou xargs).
Tags bash