我是bash shell脚本并遇到问题的新手。
我有这样的代码:
function build()
{
echo "Building: " | tee -a $LOG_FILE
{
#do some processing here and if error set the err var to say 2
if [[ $err -eq 2 ]]; then
echo "Error: exit"
exitStatus=2
fi
} 2>&1 | tee -a $LOG_FILE | grep -e "$GREP_FAIL_TERM" -e "$GREP_ERROR_TERM"
}
,其中
GREP_FAIL_TERM='[Ff]ail'
GREP_ERROR_TERM='[Ee][Rr][Rr][Oo][Rr][,;:\ ]'
和
exitStatus is a global variable set to 0 at the beginning of script
当我在出现错误时退出此函数并检查exitStatus的值为0。 我读到了使用|在子shell中执行命令,该命令未反映在父级中。 但是,如何在输出到日志文件时执行上述代码。
答案 0 :(得分:0)
是的,这是一个困难的情况。
最简单的方法是将标记放在子shell脚本的输出中,并根据它们的存在来确定状态。
你已经做了grep的错误(尽管grep -i
会成为你的好朋友)。返回代码应该表明错误。
function build()
{
{
echo "Building: "
# do stuff
} 2>&1 | tee -a $LOG_FILE | grep -Ei "fail|error[,;: ]"
SUCCESS=$? # 0 if an error was detected
}