Bash Shell 退出状态教程的示例

举报
Tiamo_T 发表于 2022/02/04 10:12:37 2022/02/04
【摘要】 在之前的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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。