Khu*_*tel 26 linux bash shell sh
我看到代码写在网上的某个地方,我想知道究竟什么是"$?" 做/给我们.谷歌搜索没有帮助.
这是我看到的代码:
#!/bin/sh
ping -c 2 localhost
if [ $? != 0 ] ; then
echo "Couldn't ping localhost, weird"
fi
ping -c 2 veryweirdhostname.noend
if [ $? != 0 ] ; then
echo "Surprise, Couldn't ping a very weird hostname.."
fi
echo "The pid of this process is $$"
Run Code Online (Sandbox Code Playgroud)
取自:http://efod.se/writings/linuxbook/html/shell-scripts.html
Rei*_*ica 36
$? 是一个变量,包含您运行的最后一个命令的返回值.
示例C程序(example.c):
int main() { return 1; }
Run Code Online (Sandbox Code Playgroud)
示例Bash:
gcc -o example example.c
./example
echo $? # prints 1
Run Code Online (Sandbox Code Playgroud)
Jen*_*ens 14
大多数答案都缺少一些细节.在shell的POSIX标准中,在特殊参数部分中找到了明确的答案:
$?扩展到最近管道的十进制退出状态(请参阅管道).
不要对管道这个词感到惊讶,因为即使是一个简单的命令,例如在ls语法上是由单个命令组成的管道.但那么,$?多命令管道是什么?它是管道中最后一个命令的退出状态.
那些在后台执行的管道怎么样grep foo bigfile|head -n 10 > result &?
wait一旦管道的最后一个命令完成,就可以检索它们的退出状态.后台进程pid可用$!,并$?仅报告后台命令是否已正确启动.
值得一提的另一个细节是退出状态通常在0到255的范围内,128到255表示由于信号而退出的过程.从C程序返回其他值很可能无法准确反映出来$?.
| 归档时间: |
|
| 查看次数: |
46072 次 |
| 最近记录: |