0

我有一个 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 会在语法错误发生后执行该行?为什么它不像其他语言那样在语法错误时退出?

4

1 回答 1

2

默认情况下,bash不会在出错时退出。

您可以通过在脚本开头添加以下行来请求该行为:

set -o errexit

请注意,它有一个简写:

set -e

本文有一些关于为什么这不是 bash 中的默认行为的提示。


如果您想编写健壮的 bash 脚本,您可能还想查看另一个标志 ,nounset它会在未定义的变量上出错。

于 2013-09-28T09:01:26.587 回答