我有两个功能。
函数返回0-255
,我想在if语句中捕获return number
。
我想比较没有declare var
和$?
我该怎么办?
我试过了:
#!/bin/bash
add(){
echo "add $1 $2 $3"
return $(($1+$2+$3))
}
sub(){
echo "sub $1 $2 $3"
return $(($1-$2-$3))
}
add 1 2 3
if [[ $? != "6" ]]; then
echo "succ"
else
echo "fail"
fi
# The code I expect is like this
if [[ $(add 1 2 3) != $(sub 10 2 2) ]]; then
echo "succ"
else
echo "fail"
fi
代码打印
add 1 2 3
fail
succ
我知道子功能会溢出,但这并不重要。
回答:仅使用$?
来抓取return
答案 0 :(得分:2)
$(...)
捕获输出,而不是返回值。最直接的实现是将命令列表放在条件中:
if fun1 1 2 3; r1=$?; fun2; r2=$?; [[ $r1 != $r2 ]]; then
echo "success"
else
echo "fail"
fi
然而,比较状态代码有点奇怪。通常,如果成功,则表示两个函数都具有0退出状态,您只需在&&
列表中运行这两个函数(假设您不需要运行fun2
{{1}先失败了。
fun1