1

bash スクリプトでエラー (および場合によっては警告) を確認するにはどうすればよいですか?

git リポジトリにチェックインする前に、bash スクリプトを事前チェックしたいと考えています。

最初の簡単なチェックに使用できることはわかっていbash -n script.shますが、たとえば、読み取り専用文字列の書き換えなどは見つかりません。

readonly unique_id = "42"
unique_id = "21"

は問題ありbash -n script.shませんが、もちろん実行時に失敗します。

編集:次のスクリプト

#!/bin/bash
# check.sh
readonly unique_id="42"
unique_id="21"

実行しても実行自体がエラーメッセージになる0場合に与えるbash -n check.sh; echo $?./check.sh: line 4: unique_id: readonly variable

これは構文エラーではないため、両方の動作は正しいですが、(単体テストであっても) 実行が中断されるため、そのようなエラーを除外する事前チェックの別の方法があるかどうかを尋ねています。

Unittest は予想される論理障害のみを検出するため、これは代替手段ではありません。

4

2 に答える 2

0

もう 1 つの方法は、すべてのコードを関数内に配置することです。そうすれば、メイン関数を呼び出す前に、コードを実行して構文エラーをチェックできます。

#!/bin/bash

function A {
    ...
}

function B {
    ...
}

function main {
    # most of your codes here
    ...
}

# main "$@"

構文エラーが見つからない場合は、最後の行のコメントを外します。もちろん、eval で実行されるもの、入れ子になったパラメーター展開または実行時値に基づく展開、組み込みコマンドへの引数に基づくもの、実行時に見つかったその他のエラーなどの例外があります。

于 2013-08-12T09:46:13.193 に答える
0

そのスクリプトを実行してエラーをチェックするだけだと思いますか?次に、「エラー」メッセージをstdoutに送信しない場合は、bash: で最後の終了ステータス コードを確認することもできます$?。( http://blog.yimingliu.com/2009/01/01/check-last-exit-status-code-in-bash-shell/ )

于 2013-08-12T08:51:54.303 に答える