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

Automatically exit when bash command produce return code non zero

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
#!/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"

我知道我们可以用#!/bin/bash -x调试bash脚本,但有时脚本太长,运行太快,我们错过了重要的错误。

我不想继续写作[[ $? -ne 0 ]] && run next_command


使用set -e有很多问题。只需将命令与&&联接,并用if语句测试结果。

1
2
3
4
5
if cd /something_something && mv file_a /somedir/file_a; then
    echo $?
    exit
fi
echo"Both cd and mv worked"