2

test -e file十分な柔軟性がない場合、私は次の Bash イディオムを使用してファイルの存在を確認する傾向があります。

if [ -n "$(find ${FIND_ARGS} -print -quit)" ] ; then
   echo "pass"
else
   echo "fail"
fi

しかし、私はブール値にしか興味がないので、${FIND_ARGS}代わりにできることはありますか:

if find ${FIND_ARGS} ; ...
4

1 に答える 1

1

いいえと思います。man find...

find は、すべてのファイルが正常に処理された場合はステータス 0 で終了し、エラーが発生した場合は 0 より大きいステータスで終了します。これは意図的に非常に大まかな説明になっていますが、戻り値が 0 以外の場合、find の結果の正確さに依存するべきではありません。

出力のテストは、おそらく検索で問題ありません。それは「Bashイディオム」ではありません。それだけでは十分ではなく、Bash が利用できる場合は、extglobsglobstarを使用してファイル マッチング テストを行うことができます[[。Find は、複雑な再帰的なファイル マッチング、ファイルの実際の検索、および Bash 機能では簡単に実行できないその他の目的にのみ使用する必要があります。

于 2012-06-28T11:07:09.150 に答える