如何检查命令是否成功?

如何检查命令是否成功?

有没有什么方法可以检查执行命令是否有错误?

例子 :

test1=`sed -i "/:@/c connection.url=jdbc:oracle:thin:@$ip:1521:$dataBase" $search`
valid $test1

function valid () {
  if $test -eq 1; then
    echo "OK"
    else echo "ERROR" 
  fi
}

我已经尝试过这样做,但似乎不起作用。我不知道该怎么做。

答案1

返回值存储在中$?。0表示成功,其它表示错误。

some_command
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

与任何其他文本值一样,您可以将其存储在变量中以供将来比较:

some_command
retval=$?
do_something $retval
if [ $retval -ne 0 ]; then
    echo "Return code was not zero but $retval"
fi

有关可能的比较运算符,请参阅man test

答案2

如果你只需要知道命令是否成功或失败,就不必费心测试$?,只需直接测试命令即可。例如:

if some_command; then
    printf 'some_command succeeded\n'
else
    printf 'some_command failed\n'
fi

将输出分配给变量不会改变返回值(当然,除非当 stdout 不是终端时它的行为有所不同)。

if output=$(some_command); then
    printf 'some_command succeded, the output was «%s»\n' "$output"
fi

http://mywiki.wooledge.org/BashGuide/TestsAndConditionals解释if得更详细。

答案3

command && echo OK || echo Failed

答案4

command && echo $? || echo $?

相关内容