最近、Bash スクリプトの 1 つに問題がありました。これは、実行した SSH コマンドの 1 つからの予期しない出力が原因でした (OS バージョンのアップグレードによる)。この出力には (リモート スクリプトからの) 数値ステータス コードのみが含まれていると予想していたため、実際にはこの問題により Bash 構文エラーが発生し、それを算術式で使用しました。
しかし、私が驚いたのは、私の Bash スクリプトが構文エラーを報告した後も実行を続けていたことです。これは、ファイルの先頭近くに次の行があるにもかかわらずです。
# Terminate script if any command fails
set -o errexit
構文エラーは明らかにコマンドの失敗と同じではありませんが、前者はさらに深刻なエラー状態を表しているように私には思えます。
-n パラメータを使用して、実際にコマンドを実行せずに Bash スクリプトの構文をチェックできることは知っていますが、それでもこの問題は検出されませんでした。
エラーが発生するが終了しない例を次に示します。
#!/bin/bash
set -o errexit
x=")"
echo $(( x + 1 ))
echo still running
通常の操作中に算術式の構文エラーが検出された直後に Bash スクリプトを強制的に終了させる方法はありますか?