2つの異なる結果を提供する2つの行を見てみましょう。
p=$(cd ~ && pwd) ; echo $p
p=$(cd ~ | pwd) ; echo $p
2つの違いは何ですか?
ベストアンサー1
存在するp=$(cd ~ && pwd)
:
コマンドの置き換え、
$()
サブシェルで実行cd ~
~
ディレクトリを(ホームディレクトリ)に変更してcd
成功すると、保存&&
された文字列がホームディレクトリになるようにpwd
STDOUTにディレクトリ名を印刷します。p
/home/foobar
存在するp=$(cd ~ | pwd)
:
サブシェルの再
$()
生成両方のコマンドは
|
独自のサブシェルで実行されます(両方とも同時に開始されます)。これはサブシェルで
cd ~
行われますpwd
分離サブシェルpwd
したがって、コマンドを実行した場所のSTDOUTのみを取得できます。これは想像できるすべてのディレクトリである可能性があるため、p
ホームディレクトリではなくコマンドが呼び出されたディレクトリの名前が含まれます。