@yiltoncent
2015-10-27T05:57:16.000000Z
字数 493
阅读 3376
LINUX Shell
看公司产品代码,发现一段代码比较奇怪:

为什么用fread一个流之后,要判断第一个自己是不是为0,刚开始思维一直挂在popen函数本身,上网搜了许久也没发现什么。忽然看到popen打开shell语句的最后一句:
echo $?
这才恍然大悟,原来是shell特殊变量的问题。
这儿有一个链接,里面列举了常用特殊变量的意义,这儿摘录一下:
| 变量 | 含义 |
|---|---|
| $0 | 当前脚本的文件名。 |
| $n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
| $# | 传递给脚本或函数的参数个数。 |
| $* | 传递给脚本或函数的所有参数。 |
| $@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
| $? | 上个命令的退出状态,或函数的返回值。 |
| $$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
$?变量表示在当前shell中上一次命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件。
现在回头看代码里面的处理,一目了然。Linux里面天地宽广,学习之路道阻且长。
