代码如下:
if a = `grep '^5' ${log} | wc -l `
RC=0
else
RC=9
fi
#####此处通过log能看见RC的值已经为9
RC=$?
case ${RC} in
0)
;;
*)
exit ${RC}
;;
#####最后却走的是RC=0的分支,请问这是为什么
$?的意思是 上一条指令的返回值
第一你的if语句不是在函数中得
第二上一条语句—if只要是执行成功没有出错 那么它的返回值一定为0
所以$?一定为0 肯定走得时RC=0的分支
你要弄清楚什么是返回值追问
mytest()
{
if False;then
RC=0
return 0
else
RC=9
return 9
fi
}
mytest
echo '$? is ' $?
echo 'RC is' $RC
第一你的if语句不是在函数中得
第二上一条语句—if只要是执行成功没有出错 那么它的返回值一定为0
所以$?一定为0 肯定走得时RC=0的分支
你要弄清楚什么是返回值追问
哦 先谢谢你对第一个问题的指导,那怎么能获取if中RC的值呢,我想让RC=9的时候 做一些其他处理
追答如果一定要用$?的话,请看示例
#!/bin/bashmytest()
{
if False;then
RC=0
return 0
else
RC=9
return 9
fi
}
mytest
echo '$? is ' $?
echo 'RC is' $RC
温馨提示:答案为网友推荐,仅供参考