我最近在我的一个 Bash 脚本中遇到了一个问题,这是由它运行的一个 SSH 命令的意外输出引起的(由于操作系统版本升级)。这个问题实际上导致了 Bash 语法错误,因为我希望这个输出只包含一个数字状态代码(来自远程脚本),然后我在算术表达式中使用了它。
不过,令我惊讶的是,我的 Bash 脚本在报告语法错误后继续执行。尽管事实上我在文件开头附近有以下行:
# Terminate script if any command fails
set -o errexit
尽管语法错误显然与失败的命令不同,但在我看来,前者代表了更严重的错误情况。
我知道您可以使用 -n 参数来检查 Bash 脚本的语法,而无需实际执行任何命令,但无论如何也不会遇到这个问题。
这是一个导致错误但不退出的示例:
#!/bin/bash
set -o errexit
x=")"
echo $(( x + 1 ))
echo still running
在正常操作期间检测到算术表达式中的语法错误后,有什么方法可以强制 Bash 脚本立即终止?