我明白
a_command || fallback_command
字符串
它会从command_a中捕获任何非零的exit_code(即当command_a失败时),并运行fallback_commad。如何为某些特定代码实现这一点?如何使它像a_command
抛出255
时那样工作,然后运行fallback_command?
我试着做一些事情,
a_command
VAR=$?
if [ $VAR==255 ]
then
fallback_command
exit 0
fi
型
但是这不会抑制由command_a抛出的非零错误。我想抑制非零的exit_codes。
7条答案
按热度按时间mm5n2pyu1#
IMHO
case
是完美的这一点字符串
k4ymrczo2#
就像这样简单地维护内联布尔或
||
:字符串
测试实现:
型
测试输出:
型
进一步使用fall_back caller实用程序命令:
型
wbrvyc0a3#
您的代码中有一个错误。
[ $VAR==255 ]
将始终为真,因为它与下面的代码相同:字符串
如果要比较数字,请使用
-eq
:型
同样,若要测试字串的相等性,您可以用途:
型
在本例中,您希望使用
-eq
。此页面可以帮助:https://www.computerhope.com/unix/bash/test.htm
hs1ihplo4#
你可以使用if指令:
字符串
一条线:
型
k7fdbhmy5#
您的代码将始终执行fallback_command。原因是如果
x
不为空,则test x
总是成功。例如,假设VAR等于100,因此您基本上执行test 100==255
,并且由于字符串 100==255 不为空(它的长度为8个字符),因此条件成功。你可以这样做:
字符串
hgc7kmma6#
嗯,在尝试了一点之后,我发现了一种方法,
字符串
13z8s7eq7#
使用
set -e
和陷阱:字符串
如果没有使用ERR上的陷阱,我们可以像
set -e
一样直接退出:型