网站首页 > 基础教程 正文
引言
通常,在编写Bash脚本时,需要在满足特定条件时终止脚本,或者根据命令的退出代码采取措施。
在本文中,我们将介绍Bash exit内置命令和已执行命令的退出状态。
退出状态
每个shell命令在成功终止时都会返回退出代码。
按照惯例,退出代码为零表示命令已成功完成,非退出代码为零表示遇到错误。
特殊变量$?返回最后执行的命令的退出状态:
date &> /dev/null
echo $?
该 date 命令成功完成,并且退出代码为 0。
如果尝试ls在不存在的目录上运行,则退出代码将为非零:
ls /nonexisting_dir &> /dev/null
echo $?
结果输出 2。
状态代码可用于找出命令失败的原因。每个命令的手册页,都包含有关退出代码的信息。
当执行多命令管道时,管道的退出状态为最后一条命令的退出状态:
sudo tcpdump -n -l | tee file.out
echo $?
在上面的示例中,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/bash
echo "doing stuff..."
exit
仅仅使用 exit,相当于调用 exit $?。或者你也可以省略 exit。
下面是显示非脚本用户调用脚本时如何终止脚本的示例:
如果您以root用户身份运行脚本,则退出代码将为零。否则,脚本将以status退出1。
写在最后
每个 shell 命令终止时,都会返回退出码,在 bash 脚本中你可以灵活地使用,并控制程序流程。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
- 上一篇: 关联数据无须重复输入,VBA轻松实现重组转换
- 下一篇: Shell 脚本中的exit状态解释
猜你喜欢
- 2024-11-21 Linux 汇编语言开发指南
- 2024-11-21 不小心删除/etc/passwd文件怎么办
- 2024-11-21 Linux | awk 特殊模式“BEGIN 和 END”
- 2024-11-21 Linux 网络编程——libpcap详解
- 2024-11-21 Linux Bash Shell学习之流程控制——if/else
- 2024-11-21 linux如何切换用户
- 2024-11-21 Linux系统常用命令
- 2024-11-21 Linux系统编程-02、进程
- 2024-11-21 Linux命令中特殊符号
- 2024-11-21 一行代码如何隐藏 Linux 进程?
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)