【发布时间】:2023-06-22 19:38:01
【问题描述】:
我想做一个构建链脚本,如果编译过程中有错误,我不希望它执行到最后。
这是我第一次在 bash 中编写更“详细”的脚本,但它不起作用:
- 它不回显 ERROR,尽管我在其中有带有单词 error 的行
- 无论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 setting a global variable inside a loop and retaining its value -- Or process substituion for dummies 和How do I use regular expressions in bash scripts?, 这是代码的最终版本。 它有效:
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
【问题讨论】:
标签: bash