こんにちは、私はディレクトリパスをパラメータとして使用し、file.txtがディレクトリにあることを確認するifタスクを実行しようとしています。その場合は 1 を返し、そうでない場合は 0 を返します。
if [ -e $1/file.txt ]; then
exit 1
else exit 0
fi
私もlsメソッドを試しました
ls $1/file.txt && exit 1 || exit 0
別の方法がありますか?それとも私が何かを見逃しているのでしょうか?
ベストアンサー1
file.txt
スクリプトまたは関数に最初の引数として渡されたディレクトリにファイルがあるかどうかを確認するには、次のようにします。
[ -e "$1/file.txt" ]
変数の置換を二重引用符で引用することを忘れないでください。。
ファイルが存在する場合は成功、ファイルがない場合は失敗します。失敗には、ファイルは存在するがアクセスできない状況が含まれます。たとえば、ディレクトリを閲覧する権限がないためです。
シェルスクリプトのプロセス終了状態に関して、0は成功を意味し、1(またはそれ以上、最大125)は失敗を意味します。バラよりBash関数/スクリプトでどの戻り/終了値を使用できますか?そしてプロセスの終了時にデフォルトの終了コードは何ですか?詳細については。したがって、ファイルが存在することを確認するには、スクリプトまたは関数は、ファイルが存在する場合は0を返し、そうでない場合は1を返す必要があります。コードスニペットは反対のタスクを実行します。つまり、ファイルが存在しないことを確認します。
if [ -e "$1/file.txt" ]; then
exit 0
else
exit 1
fi
もっと複雑な書き込み方法
[ -e "$1/file.txt" ]
exit
(exit
ステータスパラメータがない場合は、以前に実行されたコマンドのステータスが使用されます。)これがスクリプトの最後にある場合は重複exit
します。
!
ファイルが存在しないことを確認するには、シェル演算子を使用してコマンドを逆にすることができます。
! [ -e "$1/file.txt" ]
または!
test
/[
演算子:
[ ! -e "$1/file.txt" ]