Por que esse comando não funciona como eu esperava? [fechadas]

0
cat $(echo this\ list)

Parece que deveria ser o mesmo que

cat this\ list

mas não é.

Eu sei que posso usar

cat "$(echo this\ list)"

mas não consigo reproduzir vários arquivos no cat.

Por que o primeiro comando não funciona?

    
por sam 06.10.2017 / 21:17

1 resposta

3

O que acontece pode ser visto com set -x :

:> set -x
:> cat $(echo this\ list)
++ echo 'this\' list
+ cat 'this\' list

:> cat this\ list
+ cat 'this list'

A diferença é que 'this\' list é dois argumentos, ou seja, cat tenta ler um arquivo this\ e outro arquivo list mas 'this list' é apenas um único argumento, ou seja, um nome de arquivo diferente.

Você precisa:

:> cat "$(echo this\ list)"
++ echo 'this list'
+ cat 'this list'
    
por 06.10.2017 / 22:04