&&

&&

2つの異なる結果を提供する2つの行を見てみましょう。

p=$(cd ~ && pwd) ; echo $p
p=$(cd ~ |  pwd) ; echo $p

2つの違いは何ですか?

ベストアンサー1

存在するp=$(cd ~ && pwd)

  • コマンドの置き換え、$()サブシェルで実行

  • cd ~~ディレクトリを(ホームディレクトリ)に変更してcd成功すると、保存&&された文字列がホームディレクトリになるようにpwdSTDOUTにディレクトリ名を印刷します。p/home/foobar

存在するp=$(cd ~ | pwd)

  • サブシェルの再$()生成

  • 両方のコマンドは|独自のサブシェルで実行されます(両方とも同時に開始されます)。

  • これはサブシェルでcd ~行われますpwd分離サブシェル

  • pwdしたがって、コマンドを実行した場所のSTDOUTのみを取得できます。これは想像できるすべてのディレクトリである可能性があるため、pホームディレクトリではなくコマンドが呼び出されたディレクトリの名前が含まれます。

おすすめ記事