头图

Shell 脚本中的exit状态解释

命令的返回值是其退出状态,退出状态用于检查命令执行的结果(成功/失败)。如果退出状态为0,则命令执行成功。如果命令失败,则退出状态为非零。
下面表格中是返回值对应着退出状态的解释:

返回值 退出状态
0 成功
非0状态 失败
2 用法不正确
126 不是可执行文件
127 没有找到指令
$?特殊变量
shell中的变量名$?是一个特殊的内置变量,可以获取最后一次执行命令的退出状态。
Shell 脚本中的exit状态解释Shell 脚本中的exit状态解释
news.163.com/17/1212/09/D5EQJ2A400014AEE.html
www.techweb.com.cn/prnews/qiyenews/archives/59589.html
在执行shell函数后,$?返回函数中最后一次执行命令的退出状态。
在执行shell脚本后,$?返回脚本中最后一次执行命令的退出状态。
包含退出状态的脚本实例
以下exit_status.sh脚本显示了几种退出状态:

[root@localhost scripts]# vim exit_status.sh

! /bin/bash

echo -e "Successful execution"
echo -e "====================="
echo "hello world"

退出状态为0,因为命令执行是成功的。

echo "Exit status" $?
echo .
echo -e "Incorrect usage"
echo -e "====================="
ls --option

使用了错误的用法,所以退出状态为2。

echo "Exit status" $?
echo .
echo -e "Command Not found"
echo -e "====================="
bashscript

退出状态为127,因为该脚本或者命令不存在。

echo "Exit status" $?
echo .
echo -e "Command is not an executable"
echo -e "============================="
touch execution.sh
ls -l execution.sh
./execution.sh

退出状态为126,因为该文件没有执行权限。

echo "Exit status" $?
echo .
echo -e "Custom status"
echo -e "====================="
function test1(){
if [ ! -x "./execution.sh" ]; then

 echo "\"./execution.sh\" no execute permission!!"
 return 66

fi
}
test1

退出状态为66,函数test1中判断文件是否不存在,不存在就返回echo语句,并定义了返回值。

echo "Exit status" $?
Shell 脚本中的exit状态解释Shell 脚本中的exit状态解释
下面是执行结果后,返回的各种退出状态。
Shell 脚本中的exit状态解释Shell 脚本中的exit状态解释

总结
命令的返回值是其退出状态,退出状态用于检查命令执行的结果(成功/失败)。如果退出状态为0,则命令执行成功。如果命令失败,则退出状态为非零。


Linux资讯速推
《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

22 声望
13 粉丝
0 条评论
推荐阅读
Bash 脚本实例:获取符号链接的目标位置
我们都熟悉 Linux 中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。本文将介绍 Linux 中符号链接的基础知识,并创建一个简单的 bash 脚本来获取符号链接的...

刘遄阅读 570

封面图
工具篇:iTerm与Zsh
iTerm2支持许多的主题配色,可以自己定义,也可以参考网上现成的主题配色。我个人比较喜欢draculatheme配色。支持item,vim,phpstorm , 下方存在主题官网路径,按照教程安装即可。

super白4阅读 4.7k

CentOS从零开始部署Nodejs项目
原文地址:[链接]安装nodejs、npm/cnpm {代码...} 安装mysql卸载 {代码...} 安装 {代码...} 启动 {代码...} 登录 {代码...} 修改root密码 {代码...} 允许远程访问,与本地密码区分,是两个密码 {代码...} 安装git...

jigsaw3阅读 5k评论 3

麒麟操作系统 (kylinos) 从入门到精通 - 常用软件安装 - 第三篇 常用软件安装(windows下的习惯)
本篇内容大部分从应用商店进行安装,部分通过官网下载,少部分通过命令行安装。1.原生应用1.1钉钉1.2飞书1.3 蓝信1.4 腾讯文档1.5 金山文档1.6 搜狗输入法(拼音)1.7 五笔输入法1.8 libreoffice官方也带了WPS,...

码上世界3阅读 7.2k评论 17

封面图
深入剖析容器网络和 iptables
Docker 能为我们提供很强大和灵活的网络能力,很大程度上要归功于与 iptables 的结合。在使用时,你可能没有太关注到 iptables 的作用,这是因为 Docker 已经帮我们自动完成了相关的配置。

张晋涛3阅读 1.2k

封面图
Metasploit实现木马生成、捆绑及免杀
在一次渗透测试的过程中,避免不了使用到社会工程学的方式来诱骗对方运行我们的木马或者点击我们准备好的恶意链接。木马的捆绑在社会工程学中是我们经常使用的手段,而为了躲避杀毒软件的查杀,我们又不得不对木...

白风之下1阅读 9k

openSSH升级公钥失效Permission denied (publickey)解决方案
背景centos系统升级openSSH后,服务器上无法再拉取代码,报错如下:原因服务器重新安装SSH后公钥改变,需要重新安装ssh-keygen -t rsa -C "邮箱地址"生成公钥,删除gitlab原有公钥,但是git pull依然报错如下:依...

兰俊秋雨1阅读 1.2k

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

22 声望
13 粉丝
宣传栏