スクリプトのステートメントでは、条件がif
aを使用しているのを見ますが、$
その理由を理解できません。
if $( ssh user@host " test -e file " ); then
echo "File is there"
else
echo "We don't that file on that host"
fi
ベストアンサー1
$(...)
コマンドの置換です。シェルは埋め込みコマンドを実行し、式はコマンドの標準出力に置き換えられます。
通常、代替テキストにシェルが後で実行できるコマンドの名前が指定されていない場合、エラーが生成されます。ただし、test
出力は生成されないため、結果はシェルが「スキップする」空の文字列です。たとえば、次を実行するとどうなるか考えてみましょう。
if $( ssh user@host " echo foo " ); then
echo "File is there"
else
echo "We don't that file on that host"
fi
与えられたコードは、不要なコマンドの置き換えなしで正しく書かれています。if
ステートメントに必要な唯一のものは、コマンドの終了状態です。
if ssh user@host "test -e file"; then
echo "File is there"
else
echo "We don't that file on that host"
fi