name のファイルを読み取る必要がある小さな bash プログラムを作成しましたinput
。file not found
ファイルが見つからない場合は、スクリプトにメッセージを出力して終了または強制終了させたいと考えています。
2 に答える
5
読み取る直前に、ファイルが存在するかどうかを確認します。
if [ ! -f input ]; then
echo "File Not found"
exit 1
fi
于 2012-10-09T12:02:39.357 に答える
1
Bash 終了ハンドラーを使用する
Bash のset -e
オプションを使用して、ほとんどの同様の状況を自動的に処理し、システム生成の (ただし、一般的には賢明な) エラー メッセージを表示できます。例えば:
$ set -e; ls /tmp/doesnt_exist
ls: cannot access /tmp/doesnt_exist: No such file or directory
-e オプションを指定すると、エラー メッセージが表示された後、現在のシェルがゼロ以外の終了ステータスでただちに終了することにも注意してください。これは、あなたが望むものを手に入れるための手っ取り早い方法です。
読み取り可能なファイルを手動でテストする
カスタム メッセージが本当に必要な場合は、テスト条件を使用します。たとえば、ファイルが存在し、読み取り可能であることを確認するには、次のようなものを使用できます。
if [[ -r "/path/to/input" ]]; then
: # do something with "input"
else
# Send message to standard error.
echo "file not found" > /dev/stderr
# Exit with EX_DATAERR from sysexits.h.
exit 65
fi
関連項目
man 1 test
可能なテスト条件のより完全なリストについては、を参照してください。
于 2012-10-09T12:16:52.220 に答える