使用&&和||在多行bash脚本中

时间:2014-12-20 23:12:07

标签: bash

echo hello; echo hi

在脚本中与此相同:

echo hello
echo hi

我如何对以下可能性做同样的事情?

echo hello && echo hi
echo hello || echo hi

我认为我可以这样做:

echo hello && \
echo hi

echo hello || \
echo hi 

但这或多或少模仿多行脚本

这样做的恰当方法是什么?

编辑:我知道如何&&和||工作,我只是想知道如何在多行脚本中有效地复制它

2 个答案:

答案 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