Unix系统中关于SHELL中的内置变量$?的理解

关于SHELL中的内置变量$?,一般都是这样解释的,获得上一条命令执行后的返回值,0表示没有错误,其它任何值表明有错误。
例1:

$ app/xuhk/hello.ksh
$ echo $?

如果输出0代表运行shell文件hello.ksh没有发生错误,否则代表shell文件运行失败
再看一个例子
例2:

$ length=10
$ height=5
$ result=`echo "${length} * ${height}" | bc`
$ echo $?
0
$ echo ${result}
50

$?的结果是0,代表命令没发生错误,但这里的$?是计算操作【`echo "${length} * ${height}" | bc`】的返回值呢,还是赋值操作【result=`echo "${length} * ${height}" | bc`】的返回值呢?
其实我觉得应该是计算操作【`echo "${length} * ${height}" | bc`】命令执行后的返回值,我们把例子改下,把shell的运算器bc改成一个不存在的命令bcTest,如下:
例3:

$ length=10
$ height=5
$ result=`echo "${length} * ${height}" | bcTest`
ksh: bcTest:  未找到。
$ echo $?
127
$ echo ${result}

从上面的运行结果来看$?为127,这个值是【`echo "${length} * ${height}" | bcTest`】命令执行错误后的返回值,因为发生错误,所以赋值操作并未执行,${result}里的值为空。但奇怪的是即使${result}里以前有值也没了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值