![如何检查命令是否成功?](https://linux22.com/image/808452/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E5%91%BD%E4%BB%A4%E6%98%AF%E5%90%A6%E6%88%90%E5%8A%9F%EF%BC%9F.png)
有没有什么方法可以检查执行命令是否有错误?
例子 :
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 $?