Unix系统中关于SHELL中的内置变量$?的理解
2012-07-25 10:51
239 查看
关于SHELL中的内置变量$?,一般都是这样解释的,获得上一条命令执行后的返回值,0表示没有错误,其它任何值表明有错误。
例1:
如果输出0代表运行shell文件hello.ksh没有发生错误,否则代表shell文件运行失败
再看一个例子
例2:
$?的结果是0,代表命令没发生错误,但这里的$?是计算操作【`echo "${length} * ${height}" | bc`】的返回值呢,还是赋值操作【result=`echo "${length} * ${height}" | bc`】的返回值呢?
其实我觉得应该是计算操作【`echo "${length} * ${height}" | bc`】命令执行后的返回值,我们把例子改下,把shell的运算器bc改成一个不存在的命令bcTest,如下:
例3:
从上面的运行结果来看$?为127,这个值是【`echo "${length} * ${height}" | bcTest`】命令执行错误后的返回值,因为发生错误,所以赋值操作并未执行,${result}里的值为空。但奇怪的是即使${result}里以前有值也没了.
例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}里以前有值也没了.
相关文章推荐
- Unix系统环境变量和Shell变量
- UNIX通用系统变量和shell命令行参数(转)
- UNIX通用系统变量和shell命令行参数
- UNIX通用系统变量和shell命令行参数
- UNIX通用系统变量和shell命令行参数
- Unix:系统环境变量和SHELL变量
- 关于qt移植arm的环境变量的一些小理解
- 常用Shell脚本编写的内置变量
- ubuntu系统下关于环境变量的修改(转)
- 关于“32位系统支持4g内存的访问”的理解
- export ,source 理解shell变量的生存周期
- 关于Linux 文件系统中路径的理解
- Unix&Linux大学教程: 12 使用shell:变量和选项
- shell脚本示例,运行无限循环的shell脚本来检测拒绝列表上的用户是否登录到UNIX系统多于一次。
- 关于String和StringBuffer的理解问题:指针、变量的声明、变量的值的变化
- 关于UNIX和Linux系统下SUID、SGID的解析
- 用内置变量调试shell脚本的方法
- 关于系统内置apk签名问题。
- Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等
- 关于argument变量的理解