我有一个bash代码,我在其中创建了一个在程序中调用的函数。我忘记在其中一个语句中放入quotation mark
,因为脚本会引发语法错误。以下是代码:
#function
write_errors()
{
#writes RIGHT TRUNCATION errors in bcp import
temp_file=$1
error_file=$2
stepName=$3
error_count=`fgrep -c "right truncation" ${error_file} "` #here is the extra quotation mark
...
}
#start of script
date
...
write_errors #syntax error happens here
...
date #these lines are executed
rm -f ${temp}
rm -f ${error_file}
...
#end of script
我的问题是在write_errors
中的语法错误之后,为什么bash在语法错误发生后执行该行?为什么不像其他语言一样退出语法错误?
答案 0 :(得分:2)
默认情况下,bash
出错时不会退出。
您可以通过在脚本开头添加以下行来请求该行为:
set -o errexit
请注意,它有一个简写:
set -e
This article有一些指示,说明为什么这不是bash中的默认行为。
如果你想编写健壮的bash脚本,你可能还想查看另一个标志nounset
,它会在未定义的变量上出错。