编写 bash 脚本时与 && 等效的是什么?

编写 bash 脚本时与 && 等效的是什么?

如果这是一个重复的问题,我提前道歉。在在这里询问之前,我确实努力进行了搜索/检查。

我很乐意写这样的俏皮话:

foocommand && foocommand2 && foocommand3

我的想法是,如果前一个命令“成功”,我只希望运行后续命令。

我正在编写一个有点冗长的脚本,而这个单行代码是不可行的,因为对于其他人来说,它看起来像是一大堆令人困惑的代码。

我想在脚本中间隔开命令并在它们之间写注释。我怎样才能做到这一点并且仍然有相当于 && 的东西?

答案1

您可以将 shebang 行更改为

#!/bin/bash -e

出现任何错误后,脚本将停止。

答案2

你可以这样做:

#!/bin/sh
ls -lh &&
    # This is a comment
    echo 'Wicked, it works!'

我希望我正确理解了你的问题。

答案3

如果你不喜欢这个set -e想法,也许你可以颠倒逻辑。

foocommand || exit 1
foocommand2 || exit 2
foocommand3 || exit 3

更有用的是,替换exit为打印有用的错误消息的内容,然后退出。当然,在函数内部,您需要return而不是exit.

答案4

您可以考虑使用嵌套if语句。其他选择是使用 curly 进行分组{ true && echo hi; } || echo huh

更新1:

这是一个没有换行符/注释的示例:

{ { false && echo "inner true"; } && { echo "inner true" && true; } || { echo "inner false" && false; } || echo "outter false"; }

相关内容