0

name のファイルを読み取る必要がある小さな bash プログラムを作成しましたinputfile not foundファイルが見つからない場合は、スクリプトにメッセージを出力して終了または強制終了させたいと考えています。

4

2 に答える 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 に答える