Bash Shell 退出状态教程的示例
【摘要】 在之前的bash 介绍文章中,我们了解到 shell-script 文件包含要由 shell 解释器执行的命令列表。在本文中,让我们了解一下 shell 命令及其内部结构。
命令是一个单词序列,第一个单词表示要执行的命令,其余单词作为参数传递,其中参数可以是命令的选项或参数。
在之前的bash 介绍文章中,我们了解到 shell-script 文件包含要由 shell 解释器执行的命令列表。在本文中,让我们了解一下 shell 命令及其内部结构。
命令是一个单词序列,第一个单词表示要执行的命令,其余单词作为参数传递,其中参数可以是命令的选项或参数。
您在命令行执行的一些常见 Unix 命令是 shell 命令。例如,ls、lpr 和 grep 命令。
$ ls -alF
$ lpr filename
$ grep "string" filename
Shell 命令退出状态
命令的返回值是它的退出状态,如果命令被信号 N 终止,则返回 128 + N。退出状态用于检查命令执行的结果(成功/失败)。如果退出状态为零,则命令成功。如果命令失败,退出状态将非零。
退出价值 | 退出状态 |
---|---|
0(零) | 成功 |
非零 | 失败 |
2 | 使用不当 |
127 | 没有找到指令 |
126 | 不是可执行文件 |
美元?外壳变量
shell 变量名 $? 是一个特殊的内置变量,它具有最后执行的命令的退出状态。
- shell函数执行后,$? 返回函数中执行的最后一个命令的退出状态。
- 在 shell 脚本执行后,$? 返回脚本中执行的最后一个命令的退出状态。
解释 Shell 命令退出状态的示例 Shell 脚本
以下 exitstatus.sh shell 脚本显示了各种 shell 命令退出状态的示例。
$ cat exitstatus.sh
#! /bin/bash
echo -e "Successful execution"
echo -e "====================="
echo "hello world"
# Exit status returns 0, because the above command is a success.
echo "Exit status" $?
echo -e "Incorrect usage"
echo -e "====================="
ls --option
# Incorrect usage, so exit status will be 2.
echo "Exit status" $?
echo -e "Command Not found"
echo -e "====================="
bashscript
# Exit status returns 127, because bashscript command not found
echo "Exit status" $?
echo -e "Command is not an executable"
echo -e "============================="
ls -l execution.sh
./execution.sh
# Exit status returns 126, because its not an executable.
echo "Exit status" $?
现在,执行上面的 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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)