当bash命令产生非零返回码时自动退出

当bash命令产生非零返回码时自动退出,bash,Bash,在bash中,如果命令行返回代码不是零,我们如何使脚本自动退出。例如: #!/bin/bash cd /something_something mv file_a /somedir/file_a # this produce an error echo $? # This produce a non-zero output echo "We should not continue to this line" 我知道我们可以用#调试bash脚本/bin/bash-x但有时脚本太长,运行速度太

在bash中,如果命令行返回代码不是零,我们如何使脚本自动退出。例如:

#!/bin/bash

cd /something_something
mv file_a /somedir/file_a # this produce an error
echo $?  # This produce a non-zero output
echo "We should not continue to this line"
我知道我们可以用
#调试bash脚本/bin/bash-x
但有时脚本太长,运行速度太快,我们错过了重要错误

我不想继续写下去
[[$?-ne 0]]&&runnext_命令

使用
set-e有很多方法。只需使用
&&
连接命令,并使用
if
语句测试结果

if cd /something_something && mv file_a /somedir/file_a; then
    echo $?
    exit
fi
echo "Both cd and mv worked"
使用
set-e时有以下几种方法。只需使用
&&
连接命令,并使用
if
语句测试结果

if cd /something_something && mv file_a /somedir/file_a; then
    echo $?
    exit
fi
echo "Both cd and mv worked"

您可以使用
set-e
#/bin/bash-e
^^+另称为“错误退出”标志
mv file_a/somedir/file_a | |退出
?@anubhava谢谢这就是我需要的。奇怪的是,我的
bash--help
没有显示这个选项,不管怎样,它还是可以工作的。你能把它作为一个答案吗?请注意,描述一下为什么你所要求的是一个坏主意。很难区分“X返回的值为false”和“X失败”之间的区别,很多东西返回非零退出状态的原因并不是真正的失败。更糟糕的是,
set-e
有很多试探法来尝试猜测这些情况,它们是,这些差异会导致意外/破坏。你可以使用
set-e
#/bin/bash-e
^^+另称为“错误退出”标志
mv file_a/somedir/file_a | |退出
?@anubhava谢谢这就是我需要的。奇怪的是,我的
bash--help
没有显示这个选项,不管怎样,它还是可以工作的。你能把它作为一个答案吗?请注意,描述一下为什么你所要求的是一个坏主意。很难区分“X返回的值为false”和“X失败”之间的区别,很多东西返回非零退出状态的原因并不是真正的失败。更糟糕的是,
set-e
有很多试探法来尝试猜测这些情况,它们是,而这些差异会导致意外/破坏。