Substituição de processo (por exemplo, $ (somecommand)) Em poucas palavras

0

No meu shell do diretório home no mac, eu corro o seguinte eval "ls" e isso só me mostra os diretórios. Mas se eu correr

eval "$(ls)" recebo a seguinte saída:

    zsh: command not found: Applications
zsh: command not found: Desktop
zsh: command not found: Development
zsh: command not found: Development.zip
zsh: command not found: Documents
zsh: command not found: Downloads
zsh: command not found: Dropbox
zsh: command not found: Library
zsh: command not found: Movies
zsh: command not found: Music
zsh: command not found: Pictures
zsh: command not found: Public

não estou claro o que está acontecendo aqui. Qual a diferença?

    
por j2emanue 06.01.2017 / 19:31

1 resposta

2

A construção $(stuff) será substituída pelos resultados da execução de stuff em uma subshell. Então:

echo $(echo hello)

se tornará

echo hello

Portanto,

eval "$(ls)"

executará ls , obterá sua saída e usará essa saída como o argumento para eval .

    
por 06.01.2017 / 19:34