在我们的 bash介绍文章,我们了解到一个shell脚本文件包含要由shell解释器执行的3d捕鱼达人列表。在本文中,让我们回顾一下shell3d捕鱼达人及其内部。
3d捕鱼达人是单词序列。第一个单词表示要执行的3d捕鱼达人,其余单词作为参数传递,其中参数可以是3d捕鱼达人的选项或参数。
在3d捕鱼达人行中执行的一些常见Unix3d捕鱼达人是shell3d捕鱼达人。例如,ls,lpr和grep3d捕鱼达人。
$ ls -alF $ lpr filename $ grep "string" filename
Shell3d捕鱼达人退出状态
3d捕鱼达人的返回值是其退出状态,如果3d捕鱼达人被信号N终止则返回128 +N。退出状态用于检查3d捕鱼达人执行的结果(成功/失败)。如果退出状态为零,则3d捕鱼达人为成功。如果3d捕鱼达人失败,则退出状态将为非零。
退出值 | 退出状态 |
---|---|
0(零) | 成功 |
非零 | 失败 |
2 | 用法不正确 |
127 | 找不到相关3d捕鱼达人 |
126 | 不是可执行文件 |
$?外壳变量
外壳变量名$?是一个特殊的内置变量,具有最后执行的3d捕鱼达人的退出状态。
- shell函数执行后,$?返回函数中最后执行的3d捕鱼达人的退出状态。
- 执行完shell脚本后,$?返回脚本中最后执行的3d捕鱼达人的退出状态。
说明Shell3d捕鱼达人退出状态的示例Shell脚本
以下exitstatus.sh shell脚本显示了各种shell3d捕鱼达人退出状态的示例。
$ cat exitstatus.sh #! /bin/bash echo -e "成功ful execution" echo -e "=====================" echo "hello world" # 退出状态 returns 0, because the above command is a success. echo "退出状态" $? echo -e "用法不正确" echo -e "=====================" ls --option # 用法不正确, so exit status will be 2. echo "退出状态" $? echo -e "找不到相关3d捕鱼达人" echo -e "=====================" bashscript # 退出状态 returns 127, because bashscript command not found echo "退出状态" $? echo -e "Command is not an executable" echo -e "=============================" ls -l execution.sh ./execution.sh # 退出状态 returns 126, because its not an executable. echo "退出状态" $?
现在,执行上面的exitstatus.sh查看示例shell脚本给出的各种退出状态。
$ bash exitstatus.sh Successful execution ===================== hello world Exit status 0 Incorrect usage ===================== ls: unrecognized option `--option' Try `ls --help' for more information. Exit status 2 Command Not found ===================== exitstaus.sh: line 15: bashscript: command not found Exit status 127 Command is not an executable ============================= -rw-r--r-- 1 root root 659 Mar 9 13:36 execution.sh exitstatus.sh: line 21: ./execution.sh: Permission denied Exit status 126
注意:检查函数或3d捕鱼达人的返回值是程序员的主要职责之一。在编写任何代码时,这应该成为您的第二本性。
如果您喜欢这篇文章,您可能还会喜欢..
![]() |
![]() |
![]() |
![]() |
我想补充3分。
1)您需要输入$?运行3d捕鱼达人后立即执行。
2)不要忘记可以将退出代码保存到myvar = $之类的变量中吗?和
3)显示管道破裂时最后一条3d捕鱼达人的退出代码。例如
some_command | ls
上面的3d捕鱼达人的退出代码是0,而不是some_command的情况下的127。&& ls