linux 中 echo ${?}是什么意思 麻烦高手解释一下

 我来答
zoujc1987
推荐于2017-11-24
知道答主
回答量:24
采纳率:0%
帮助的人:14.7万
展开全部
显示上一个执行的命令(或程序)的返回值,这个值通常在0~255之间,0表示一切正常。
追问
0以外的数值代表什么呢
追答
一般来说,非0值就表示错误,但要根据这个值判断具体是什么错误就比较困难了。

比较标准的方法是用系统提供的sysexits.h头文件内定义的一系列宏作为出错时的返回值,每个宏都代表不同的错误类型,具体可以参考 /usr/include/sysexits.h 内的注释。不过这个头文件似乎不能满足所有程序的需要,很多程序都没有遵守这个标准

有些程序在发生内部错误时,直接用出错的系统调用产生的错误编号(errno.h里的errno)作为返回值

有些程序会在手册或文档内专门说明返回值的意义,比如bash:
1: Catchall for general errors
2: Misuse of shell builtins (according to Bash documentation)
126: Command invoked cannot execute
127: "command not found"
128: Invalid argument to exit
128+n: Fatal error signal "n"
255: Exit status out of range (exit takes only integer args in the range 0 - 255)

还有一些程序不论执行过程中发生了什么都返回0,这个很坑爹,但也是普遍存在的情况。
hehefaq
2012-01-30 · TA获得超过458个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:384万
展开全部
显示命令

通常,make会把其要执行的命令行在命令执行前输出到屏幕上。当我们用“@”字符在命令行前,那么,这个命令将不被make显示出来,最具代表性的例子是,我们用这个功能来像屏幕显示一些信息。如:

@echo 正在编译XXX模块......

当make执行时,会输出“正在编译XXX模块......”字串,但不会输出命令,如果没有“@”,那么,make将输出:

echo 正在编译XXX模块......
正在编译XXX模块......

如果make执行时,带入make参数“-n”或“--just-print”,那么其只是显示命令,但不会执行命令,这个功能很有利于我们调试我们的Makefile,看看我们书写的命令是执行起来是什么样子的或是什么顺序的。

而make参数“-s”或“--slient”则是全面禁止命令的显示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式