⑴ shell脚本的一个返回值问题。
首先,要理解 (( )) 这个符号用作数学运算或整数的逻辑比较,一个例子:
[ “$a” -lt 16 ] 等同于 (( a < 16 ))
$?则是返回上一个命令的执行结果,成功(逻辑真)返回0,失败(逻辑假)返回1。
本题中,
(( 0 )) 返回逻辑假(false),所以$?返回1;
(( 1 )) 返回逻辑真(true),所以$?返回0。
⑵ shell求助,数值比较-eq,-ne,-gt,-ge,-lt,-le。书上说的是:假值是零,真值为1,可写的脚本却出错了。
要不是你看错了,要不就是书上写错了!
正解:$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.
切记:$?永远表示shell命令最后一次执行后的退出状态,当函数执行完毕后,如果又执行了其它命令,则$?不再表示函数执行后的状态,而表示其它命令的退出状态.