Mik*_*e B 31 scripting bash centos
如果这是一个重复的问题,我提前道歉。在问这里之前,我确实努力搜索/检查。
我很乐意写这样的单行代码:
foocommand && foocommand2 && foocommand3
Run Code Online (Sandbox Code Playgroud)
这个想法是,如果前一个命令“成功”,我只希望后续命令运行。
我正在编写一个有点冗长的脚本,这个单行代码是不可行的,因为它看起来像是一大块令人困惑的代码。
我想在脚本中将命令隔开并在它们之间写注释。我怎样才能做到这一点,并且在那里仍然有相当于 && 的东西?
cho*_*oba 39
您可以将shebang行更改为
#!/bin/bash -e
Run Code Online (Sandbox Code Playgroud)
发生任何错误后,脚本将停止。
sch*_*iba 23
你可以这样做:
#!/bin/sh
ls -lh &&
# This is a comment
echo 'Wicked, it works!'
Run Code Online (Sandbox Code Playgroud)
我希望我理解你的要求是正确的。
tri*_*eee 19
如果你不喜欢这个set -e想法,也许你可以颠倒逻辑。
foocommand || exit 1
foocommand2 || exit 2
foocommand3 || exit 3
Run Code Online (Sandbox Code Playgroud)
更有exit用的是,用一些东西替换以打印有用的错误消息,然后退出。当然,在函数内部,您想要return代替exit.
您可以改用if else fi块。
if foocommand; then
# some comments
if foocommand2; then
# more comments
foocommand3
fi
fi
Run Code Online (Sandbox Code Playgroud)
它更具可读性。
或者,您可以使用\将大 1 衬里分成几行
foocommand && \
# some comment
foocommand2 && \
# more comment
foocommand3
Run Code Online (Sandbox Code Playgroud)
但这当然会让未经训练的眼睛感到困惑。
您可以考虑使用嵌套if语句。其他选择是使用 curl 来分组{ true && echo hi; } || echo huh
更新 1:
这是一个没有换行符/注释的示例:
{ { false && echo "inner true"; } && { echo "inner true" && true; } || { echo "inner false" && false; } || echo "outter false"; }
Run Code Online (Sandbox Code Playgroud)