ビルド チェーン スクリプトを作成したいのですが、コンパイル中にエラーが発生した場合、最後まで実行したくありません。
より「精巧な」スクリプトをbashで書くのは初めてですが、うまくいきません:
- エラーという単語が含まれる行がありますが、エラーはエコーしません
- testError の値がどうであれ、スクリプトはその行でハングするだけです
これはコードです:
testError=false
output=$(scons)
while read -r line; do
if [[ $line == .*[eE]rror.* ]] ; then echo 'ERROR' ; $testError = true ; fi #$testError = true fi
done
echo $testError
if $testError ; then exit ; fi;
... other commands
編集:すべてのポスターの回答に従い、ループ内でグローバル変数を設定し、その値を保持する Bash -- または、ダミーの置換を処理し、bash スクリプトで正規表現を使用するにはどうすればよいですか? 、これはコードの最終バージョンです。できます:
testError=false
shopt -s lastpipe
scons | while read -r line; do
if [[ $line =~ .*[eE]rror.* ]] ; then
echo -e 'ERROR'
testError=true
fi
echo -e '.'
done
if $testError ; then
set -e
fi