[关闭]
@yiltoncent 2015-10-27T13:57:16.000000Z 字数 493 阅读 3153

由 popen 引起的Shell特殊变量问题

LINUX Shell


看公司产品代码,发现一段代码比较奇怪:
1.jpg-163.9kB

为什么用fread一个流之后,要判断第一个自己是不是为0,刚开始思维一直挂在popen函数本身,上网搜了许久也没发现什么。忽然看到popen打开shell语句的最后一句:

echo $?

这才恍然大悟,原来是shell特殊变量的问题。

这儿有一个链接,里面列举了常用特殊变量的意义,这儿摘录一下:

变量 含义
$0 当前脚本的文件名。
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

$?变量表示在当前shell中上一次命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件。

现在回头看代码里面的处理,一目了然。Linux里面天地宽广,学习之路道阻且长。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注