引言通常,在编写Bash脚本时,需要在满足特定条件时终止脚本,或者根据命令的退出代码采取措施 。
在本文中,我们将介绍Bash exit内置命令和已执行命令的退出状态 。
文章插图
退出状态每个shell命令在成功终止时都会返回退出代码 。
按照惯例,退出代码为零表示命令已成功完成,非退出代码为零表示遇到错误 。
特殊变量$?返回最后执行的命令的退出状态:
date &> /dev/nullecho $?
该 date 命令成功完成,并且退出代码为 0 。如果尝试ls在不存在的目录上运行,则退出代码将为非零:
ls /nonexisting_dir &> /dev/nullecho $?
结果输出 2 。状态代码可用于找出命令失败的原因 。每个命令的手册页,都包含有关退出代码的信息 。
当执行多命令管道时,管道的退出状态为最后一条命令的退出状态:
sudo tcpdump -n -l | tee file.outecho $?
【Linux 命令正确的退出方式:exit 0】在上面的示例中,echo $?将打印 tee 命令的退出代码 。Bash exit 指令该exit命令以 N 状态退出 shell 程序 。它具有以下语法:
exit N
如果N未给出,则退出状态代码是最后执行的命令的退出状态代码 。在shell脚本中使用时,作为exit命令参数提供的值将作为退出代码返回给shell 。
举例说明命令的退出状态可用于条件判断语句 。在以下示例中,如果在文件 filename 内使用grep找到字符串“search-string”,则将以 0 退出(这在shell脚本中为true):
文章插图
运行以&&(AND)或||(OR)分隔的命令列表时,命令的退出状态确定是否将执行列表中的下一个命令 。此处,mkdir 仅在cd返回 0 时才执行命令:
cd /opt/code && mkdir project
如果脚本结尾exit没有指定参数,则脚本退出代码是脚本中最后执行的命令的退出代码 。#!/bin/bashecho "doing stuff..."exit
仅仅使用 exit,相当于调用 exit $? 。或者你也可以省略 exit 。下面是显示非脚本用户调用脚本时如何终止脚本的示例:
文章插图
如果您以root用户身份运行脚本,则退出代码将为零 。否则,脚本将以status退出1 。
写在最后每个 shell 命令终止时,都会返回退出码,在 bash 脚本中你可以灵活地使用,并控制程序流程 。
HAppy coding :_)
推荐阅读
- 优化关键词的方法正确的是 直通车关键词越多越好吗
- 车子停久了,蓄电池会亏电,正确的方法是这样的
- 茶饼应该这样掰才正确,云南七子饼茶的正确喝法
- linux中systemctl详细理解及常用命令
- Linux 常用运维脚本
- 如何正确控制汽车方向盘
- kali linux 系统黑客全部武器库安装教程
- linux中netstat和ss命令详解
- 科学管理Linux系统中的组与组成员
- 三分钟告诉你如何监控 Linux 服务器状态?