我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Shell退出状态的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Shell退出状态的使用

每一条 Shell 命令,不管是 Bash 内置命令(例如 cd、echo),还是外部的 linux 命令(例如 ls、awk),还是自定义的 Shell 函数,当它退出(运行结束)时,都会返回一个比较小的整数值给调用(使用)它的程序,这就是命令的退出状态(exit statu)。

很多 Linux 命令其实就是一个C语言程序,熟悉C语言的读者都知道,main() 函数的最后都有一个return 0,如果程序想在中间退出,还可以使用exit 0,这其实就是C语言程序的退出状态。当有其它程序调用这个程序时,就可以捕获这个退出状态。

if 语句的判断条件,从本质上讲,判断的就是命令的退出状态。

按照惯例来说,退出状态为 0 表示“成功”;也就是说,程序执行完成并且没有遇到任何问题。除 0 以外的其它任何退出状态都为“失败”。

之所以说这是“惯例”而非“规定”,是因为也会有例外,比如 diff 命令用来比较两个文件的不同,对于“没有差别”的文件返回 0,对于“找到差别”的文件返回 1,对无效文件名返回 2。

有编程经验的读者请注意,Shell 的这个部分与你所熟悉的其它编程语言正好相反:在C语言、C++、java、python 中,0 表示“假”,其它值表示“真”。

在 Shell 中,有多种方式取得命令的退出状态,其中 $? 是最常见的一种。上节《Shell if else》中使用了 (()) 进行数学计算,我们不妨来看一下它的退出状态。请看下面的代码:


#!/bin/bash
read a
read b
(( $a == $b ));
echo "退出状态:"$?

运行结果1:
26
26
退出状态:0

运行结果2:
17
39
退出状态:1

退出状态和逻辑运算符的组合

Shell if 语句的一个神奇之处是允许我们使用逻辑运算符将多个退出状态组合起来,这样就可以一次判断多个条件了。

Shell 逻辑运算符

运算符 使用格式 说明
&& expression1 && expression2 逻辑与运算符,当 expression1 和 expression2 同时成立时,整个表达式才成立。

如果检测到 expression1 的退出状态为 0,就不会再检测 expression2 了,因为不管 expression2 的退出状态是什么,整个表达式必然都是不成立的,检测了也是多此一举。
|| expression1 || expression2 逻辑或运算符,expression1 和 expression2 两个表达式中只要有一个成立,整个表达式就成立。

如果检测到 expression1 的退出状态为 1,就不会再检测 expression2 了,因为不管 expression2 的退出状态是什么,整个表达式必然都是成立的,检测了也是多此一举。
! !expression 逻辑非运算符,相当于“取反”的效果。如果 expression 成立,那么整个表达式就不成立;如果 expression 不成立,那么整个表达式就成立。

【实例】将用户输入的 URL 写入到文件中。


#!/bin/bash
read filename
read url
if test -w $filename && test -n $url
then
  echo $url > $filename
  echo "写入成功"
else
  echo "写入失败"
fi

在 Shell 脚本文件所在的目录新建一个文本文件并命名为 urls.txt,然后运行 Shell 脚本,运行结果为:

urls.txt↙
http://jb51.net/shell/↙
写入成功

test 是 Shell 内置命令,可以对文件或者字符串进行检测,其中,-w选项用来检测文件是否存在并且可写,-n选项用来检测字符串是否非空。下节《Shell test》中将会详细讲解。

>表示重定向,默认情况下,echo 向控制台输出,这里我们将输出结果重定向到文件。

到此这篇关于Shell退出状态的使用的文章就介绍到这了,更多相关Shell退出状态内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Shell退出状态的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Shell退出状态的使用

每一条 Shell 命令,不管是 Bash 内置命令(例如 cd、echo),还是外部的 linux 命令(例如 ls、awk),还是自定义的 Shell 函数,当它退出(运行结束)时,都会
2022-06-04

如何使用Shell退出状态

如何使用Shell退出状态?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。退出状态和逻辑运算符的组合Shell if 语句的一个神奇之处是允许我们使用逻辑运算符将
2023-06-06

Shell退出状态码的方法

这篇文章主要讲解了“Shell退出状态码的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell退出状态码的方法”吧!Shell 中运行的命令会使用0-255之间的整数值,作为退出状态
2023-06-09

Shell退出状态的用法是什么

这篇文章主要介绍“Shell退出状态的用法是什么”,在日常操作中,相信很多人在Shell退出状态的用法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shell退出状态的用法是什么”的疑惑有所帮助!接下来
2023-06-09

Shell退出状态码及其应用详解

Shell 中运行的命令会使用0-255之间的整数值,作为退出状态码,并以此来告知shell该命令执行的状态。通常情况下,约定0代表命令成功结束,非0代表程序非正常退出。典型退出状态码及其含义退出状态码含义0命令运行成功1通知未知错误2误用
2022-06-04

详解bash中的退出状态机制

程序的退出状态当一个程序结束时会向父进程报告自己的退出状态( exit status ). 通过传递 int 类型的变量给库函数 exit 或系统调用 _exit 可以设置当前程序的退出状态, 在 linux 中, 通过 WEXITSTAT
2022-06-04

电脑如何退出脱机状态

要将电脑从脱机状态恢复到在线状态,可以按照以下步骤操作:1. 首先,检查电脑是否已连接到互联网。确保该电脑已连接到可用的网络,并且网络连接正常。2. 如果网络连接正常,但电脑仍然显示脱机状态,可以尝试重新启动电脑。有时候重新启动可以解决网络
2023-09-06

Shell $?获取函数返回值或者上一个命令的退出状态

$ 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值。 所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1,
2022-06-04

如何在bash中退出状态机制

本篇文章为大家展示了如何在bash中退出状态机制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。程序的退出状态当一个程序结束时会向父进程报告自己的退出状态( exit status ). 通过传递 i
2023-06-09

excel如何退出页眉编辑状态

退出页眉编辑状态的方法有两种:1. 使用快捷键:按下键盘上的Esc键,即可退出页眉编辑状态。2. 使用菜单栏:在Excel的菜单栏中,找到“视图”选项卡,点击“页眉和页脚”,然后再点击“关闭页眉和页脚”即可退出页眉编辑状态。
2023-09-11

Shell $?如何获取函数返回值或者上一个命令的退出状态

这篇文章主要介绍“Shell $?如何获取函数返回值或者上一个命令的退出状态”,在日常操作中,相信很多人在Shell $?如何获取函数返回值或者上一个命令的退出状态问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-06-09

exit函数与Linux进程退出状态的奥秘

exit 函数是 C 语言中用于结束程序执行的一个函数,它的原型如下:void exit(int status);其中,status 参数表示程序的退出状态。在 Linux 系统中,进程退出状态是一个 8 位整数,其中高 7 位表示退出状
exit函数与Linux进程退出状态的奥秘
2024-09-09

玩转Win8锁屏及退出锁频状态的技巧

每次启动Winjavascript8的登录界面屏幕便会被一副背景的图片锁住,如果你是第一次使用到Win8系统,大都会傻傻地在干等,其实Win8可以像我们的手机操作一样,只需鼠标左键按住不放,然后轻轻的往上一拖即可进入登录界面或桌面。那么,有
2023-06-05

Linux exit函数与进程退出状态码的映射

在Linux中,当一个进程正常终止时,它会返回一个退出状态码(exit status code)exit函数原型如下:#include void exit(int status);其中,status参数就是进程的退
Linux exit函数与进程退出状态码的映射
2024-09-09

Linux下exit函数与进程退出状态信息的记录

在 Linux 系统中,当一个进程正常终止时,它会调用 exit 函数exit 函数原型如下:#include void exit(int status);其中,status 参数表示进程的退出状态。通常情况下,0
Linux下exit函数与进程退出状态信息的记录
2024-08-30

Win8快速锁屏及退出锁频状态技巧图解

貌似Windows8登录时界面有点像我的手机登录时界面,编程每当我们启动系统或登录时,屏幕就会被一副背景图片给锁住。因为本人是第一次使用Win8系统,所有不太php了解,第一次进入的时候等了老半天,我说怎么还不进桌面呢,最后用鼠标点了两下才
2023-06-05

linux中如何使用shell命令查看进程状态

在Linux中,你可以使用`ps`命令来查看进程的状态。以下是几个常见的`ps`命令选项:1. `ps -ef`:列出所有进程的详细信息,包括进程ID(PID)、父进程ID(PPID)、CPU使用率、内存使用量等。2. `ps aux`:显
2023-09-22

如何用Shell监控iptables运行状态

这篇文章主要介绍“如何用Shell监控iptables运行状态”,在日常操作中,相信很多人在如何用Shell监控iptables运行状态问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Shell监控ipt
2023-06-09

编程热搜

目录