我知道在Linux中检查错误级别可以使用$?
来完成。问题是,如果其中一个命令成功执行,$?
值将被重置,即使上一个命令失败也是如此。我用于测试的代码如下:
cd /vobs/test2/test3
if [ $2 = "R" ]; then
mv missing ~/missing2
echo "Created"
假设mv missing ~/missing2
失败,$?
应该等于1
,但由于执行了最后一个命令echo "Created"
,$?
将等于0
{1}}。如何对上面的代码执行扫描,以便$?=1
执行exit 1
命令的时刻。我可以执行if else for each command execute但它不是最好的执行方式,是吗?我需要一些建议。
答案 0 :(得分:2)
您可以使用set -e
退出第一个失败命令。这是非官方的strict bash mode":
set -e
退出所有错误。
set -o pipefail
在管道中的第一个问题上失败而不是仅在最后一个问题上失败。
set -u
无法访问未定义的变量。