echo hello; echo hi
在脚本中与此相同:
echo hello
echo hi
我如何对以下可能性做同样的事情?
echo hello && echo hi
echo hello || echo hi
我认为我可以这样做:
echo hello && \
echo hi
echo hello || \
echo hi
但这或多或少模仿多行脚本
这样做的恰当方法是什么?
编辑:我知道如何&&和||工作,我只是想知道如何在多行脚本中有效地复制它
答案 0 :(得分:3)
echo one && echo two
打印一个,如果返回0则打印两个。
echo one || echo two
打印一个,如果不返回0则打印两个。
您可以使用它来缩短if
语句,如下所示:
if [[ 1 -eq 2 ]]; then doStuff; fi
缩短为
[[ 1 -eq 2 ]] && doStuff
另一个例子是我运行更新的startx
脚本,然后是我的Ubuntu机器上的startx
sudo apt-get update && sudo apt-get -y upgrade && apt-get -y autoremove && startx
这就是链&&
在一起(记住所有&&
做的是检查命令“管道”它是否以0)退出,其方式是只运行下一个命令运行没有错误。我这样做是因为如果由于某种原因apt
使我失败,我可以从我的终端修复它,而无需等待xorg这样做。
修改强>
如果您想“扩展”&&amp ;,更多行使用:
commandToCheckReturnOf
if [[ $? -eq 0 ]]; then
doStuff
fi
如果你在||
之后,那么:
commandToCheckReturnOf
if [[ $? -ne 0 ]]; then
doStuff
fi
抱歉误会。
答案 1 :(得分:1)
您可以使用if
:
if echo hello; then
echo hi
fi
if ! echo hello; then
echo hi
fi