首页 / 知识
关于bash:基于Process Exit Code退出Shell脚本
2023-04-17 00:30:00

Exit Shell Script Based on Process Exit Code我有一个执行许多命令的shell脚本。 如果任何命令以非零退出代码退出,如何使shell脚本退出?
在每个命令之后,退出代码可以在
您需要注意管道命令,因为
如果文件不存在,则不会返回错误代码(因为管道的
请注意,这将使您获得
如果您想从管道中获取最大的错误代码,可以使用以下内容:
这将依次遍历每个 如果你想使用$ ?,你需要在每个命令之后检查它,因为$?每个命令退出后更新。这意味着如果执行管道,您将只获得管道中最后一个进程的退出代码。 另一种方法是这样做:
如果你把它放在shell脚本的顶部,看起来bash会为你处理这个问题。正如之前的一张海报所指出的那样,"set -e"会导致bash在任何简单命令上都出错。"set -o pipefail"将导致bash退出,同时管道中的任何命令都会出错。 请参阅此处或此处以获取有关此问题的更多讨论。这是set builtin上的bash手册部分。
" 如果你只是在没有参数的bash中调用exit,它将返回最后一个命令的退出代码。结合OR,如果前一个命令失败,bash应该只调用exit。但我没有测试过这个。
Bash还会将最后一个命令的退出代码存储在变量$?中。
http://cfaj.freeshell.org/shell/cus-faq-2.html#11
如何在
首先,请注意
您可能会观察到141(或269与ksh93)退出状态
要知道管道元素的退出状态 一个。用zsh:
退出代码在pipestatus特殊数组中提供。 湾用bash:
退出代码在 ... 有关详细信息,请参阅以下链接。 对于bash:
在bash中这很容易,只需用&&将它们绑在一起:
您还可以使用嵌套的if结构:
|
最新内容
相关内容
linux命令补全工具?
linux命令补全工具?,工具,系统,软件,地址,命令,名称,智能,环境,信息,终端,简述Linux中的命令行自动补齐功能1、首先打开LINUX的操作系统,在左边linux如何引入命令?
linux如何引入命令?,单位,系统,首页,名字,命令,终端,音乐,文件,目录,选项,linux怎么进入字符命令界面?打开linux系统,在linux的桌面的空白处右linux关闭系统的命令?
linux关闭系统的命令?,系统,工作,命令,时间,用户,指令,通知,目的,终端,表示,详解Linux系统中关机与重启相关命令的用法打开这里的LINUX,UBUNTUlinux命令出现箭头?
linux命令出现箭头?,系统,终端,箭头,等级,网络,状态,情况,首页,第一,命令,在linux中文件上有个绿的弯箭头什么意思这个绿色向下箭头表示该文件linux组播路由命令?
linux组播路由命令?,网络,信息,地址,系统,通信,工具,命令,服务,数字,控制台,LiNUX系统下,通过什么命令可以查看系统的路由表route print 是Win更新文件命令linux?
更新文件命令linux?,工作,系统,地址,信息,时间,命令,目录,基础,标准,网络,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目linux切换目标命令?
linux切换目标命令?,系统,密码,工具,命令,一致,工作,用户,终端,目录,用户名,linuxcat命令可以在不同目录中切换吗?1、首先仅仅从目录切换来看,llinux系统nl命令?
linux系统nl命令?,系统,工作,命令,信息,文件,标准,工具,单位,公式,内容,nl是什么意思?女生说nl的意思是:常规的恋爱。“nl”是“NormalLove”的linux基础命令增加文件?
linux基础命令增加文件?,系统,时间,名字,文件,基础,数据,命令,名称,首次,密码,linux命令如何新建一个文件终端下键入:touch加文件名,这样就创建aix与linux的命令?
aix与linux的命令?,系统,信息,命令,时间,管理,设备,平台,环境,地址,电脑,给些DOS、UNIX/LINUX下的命令?login: 输入用户名(例如:user01)password:linux命令删除用户组?
linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,工作组,Linux命令之用户组管理1、查看/etc/group文件,只存在名称为mlinux运行图形界命令?
linux运行图形界命令?,系统,密码,地址,电脑,图形界面,地方,工具,界面,终端,图形,linux图形化界面命令第一种方式比较简单,只需要选择相应的带图