在Bash脚本中,set -e
指令可以让脚本在出现错误时自动退出。但是有时候该指令无法捕获错误状态。解决这个问题的一种方法是将一个命令的退出状态码在一个中间变量中存储,并在之后的语句中检查该变量以确保没有错误发生。
以下是一个示例:
#!/bin/bash
set -e
# This should be an error, but `set -e` doesn't catch it.
foo | grep bar
# Store the exit status in a variable.
status=$?
# Check the exit status.
if [ $status -ne 0 ]; then
echo "An error occurred."
exit 1
fi
echo "No errors occurred."
在这个示例中,我们使用了一个非法命令“foo | grep bar”,它会产生错误。在使用set -e
时,脚本会自动退出,因此我们需要将exit状态码存储在“status”变量中,然后检查这个变量是否为0。如果为0,则没有错误发生,否则会输出错误信息并退出脚本。