使用-e set补充if中的退出状态

时间:2014-09-29 15:56:32

标签: bash

是否有一种简单的方法可以执行以下操作:

if ! some_command; then
    some_commands;
fi

if [[ com1 && com2 ]]; then
    something;
fi

它是使用的com1和com2的退出状态。

我意识到我可以通过使用||设置-e来获取退出状态并检查,等等。只是想知道是否有一些我想念的更简单。

ADDENDUM:我也意识到我能做到:

if some_command; then
else
    some_commands;
fi

2 个答案:

答案 0 :(得分:1)

!可以在if语句之外使用;它是一般的退出状态逆变器,不是if语法的一部分。

! some_command && { some_commands; }

some_command || { some_commands; }

是等价的。您也可以使用

com1 && com2 && { some_commands; }

答案 1 :(得分:0)

首先是

:你可以这样写:其中<command1/2>是/是一些带/不带参数的命令/脚本

$ <command1> 2>/dev/null || <command2> 2>/dev/null

第二个:你可以写一些类似的东西:

$ ( <command1> && <command2> ) 2>/dev/null && <command3> 2>/dev/null

例如:

$ echo 1 2>/dev/null || echo 0 2>/dev/null
1

$ ech1o 1 2>/dev/null|| echo 0 2>/dev/null
0

$ ( echo 1 && echo 2 ) 2>/dev/null && echo 3
1
2
3

以下内容不会打印任何内容,因为echo 3永远不会执行(由于echo1不是有效命令)

$ ( echo1 1 && echo 2 ) 2>/dev/null && echo 3