进程替换(例如 $(somecommand) )简而言之

进程替换(例如 $(somecommand) )简而言之

在 Mac 上主目录的 shell 上,我运行以下命令 eval "ls",这只是显示了目录。但如果我跑

eval "$(ls)"我得到以下输出:

    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

我不清楚这里发生了什么。有什么不同?

答案1

该构造将用在子 shell 中$(stuff)运行的结果替换自身。stuff所以:

echo $(echo hello)

会变成

echo hello

所以,

eval "$(ls)"

将运行ls,获取其输出,并将该输出用作 的参数eval

相关内容