簡単に言うと、プロセスの置き換え(例:$(somecommand))

簡単に言うと、プロセスの置き換え(例:$(somecommand))

Macのホームディレクトリにあるシェルからディレクトリ 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

この構成は、サブシェルで$(stuff)実行された結果に置き換えられます。stuffだから:

echo $(echo hello)

なります

echo hello

だから、

eval "$(ls)"

実行されls、出力を取得し、その出力を引数として使用しますeval

おすすめ記事