私はスクリプトファイルに次のコードを書いています:
if [ -f $FILEPATH ] ; then
cp $FILEPATH ~/some/other/dir
fi
さて、この同じスクリプトファイルのエラーのために、このコード部分の上にいくつかの行があります。変数$ FILEPATHは値を受け取っておらず、未定義です。実際に実行されるのは次のとおりです。
if [ -f ] ; then
cp $FILEPATH ~/some/other/dir
fi
この状況で私はこのテストが(-fに引数がないため)エラーをスローするか、falseを返すか(名前のないファイルを検索するため)、テストはtrueを返し、if条件の内容が実行されます。
私はこのシナリオでbashがこのテストをどのように解釈するのかと疑問に思っています。実際のテストはどうでしたか?
私はUbuntu上でbashバージョン4.3.48を実行しています
回答:
回答№1は2それは POSIXの動作 のために test
コマンド:
コマンド test
、と
1つの議論:
$ 1がnullでない場合はtrue(0)を終了します。それ以外の場合は、falseを終了します。
したがって test -f
(または、同等に、 [ -f ]
)は1つの非NULL引数で呼び出されるため、 true
.