学过C语言都知道,我们用exit来返回一个状态,Bash也是一样,这样父进程会判断子进程是否可用。 一个良好的习惯就是在脚本结束时都返回状态。成功返回0,非0值一般对应一个错误码。
当一个脚本以不带参数 exit 来结束时,脚本的退出状态就由脚本中最后执行命令来决定.
$?读取最后执行命令的退出码.函数返回后,$?给出函数最后执行的那条命令的退出码.这种给
函数返回值的方法是 Bash 的方法.
让我们看个简单的例子:
#!/bin/bash
ls -l
echo $?
lskdf
echo $?
! true
[yuyzhu@vm10010 experiment]$sh testExit.sh
total 8
-rwxr-xr-x 1 yuyzhu yuyzhu 8 Oct 12 2011 input
-rwxr-xr-x 1 yuyzhu yuyzhu 9 Oct 12 2011 input1
-rwxr-xr-x 1 yuyzhu yuyzhu 63 Feb 25 23:57 shellUntil
-rwxr-xr-x 1 yuyzhu yuyzhu 64 Aug 23 2013 SReturn
-rwxr-xr-x 1 yuyzhu yuyzhu 44 Aug 29 2011 testEnvSettings
-rw-rw-r-- 1 yuyzhu yuyzhu 49 Mar 2 20:55 testExit.sh
-rwxr-xr-x 1 yuyzhu yuyzhu 389 Oct 9 2011 testpackateutils
-rwxr-xr-x 1 yuyzhu yuyzhu 96 Oct 12 2011 testPatter
0
testExit.sh: line 5: lskdf: command not found
127
[yuyzhu@vm10010 experiment]$echo $?
1
由于'ls -l'会正确执行,输出状态为0,'lskdf'命令不存在,返回状态为127, 最后由于!逻辑操作,将会反转test命令的结果,这回影响推出状态,所以在执行完脚本后$?的值为1.
一个脚本的状态码可以自定义,写到注释里面,但一些特定的退出码都有预定的含义,避免冲突。
退出码(exit status,或exit code)的约定:
0表示成功(Zero - Success)
非0表示失败(Non-Zero - Failure)
2表示用法不当(Incorrect Usage)
127表示命令没有找到(Command Not Found)
126表示不是可执行的(Not an executable)
>=128 信号产生
也可以通过man exit查看exit的约定。
分享到:
相关推荐
在Linux和Unix系统中,Bash(Bourne-Again SHell)是默认的命令行解释器,用于处理用户输入的命令和脚本。Bash 4.4是其一个重要版本,带来了多项改进和新功能。在旧版本中,特别是低版本的Bash,存在一个名为...
linux 服务器GNU Bash小于版本4.3有操作系统命令注入漏洞,需要对bash升级,下载解压 #tar zxvf bash-4.4.tar.gz #cd bash-4.4 #./configure (如果centos7编译失败,请先安装#yum install gcc) #make #make ...
cp -pr /etc/skel/.bash* /home/test/ #/home/test是用户目录 改变用户家目录:usermod -md /tmptest test 以上就是小编为大家带来的解决ssh远程登陆linux显示-bash-4.1$的问题全部内容了,希望大家多多支持软件开发...
在centos6或rhel6 操作系统安装bash-completion-2.1-6.el7.noarch.rpm后,重启即生效
bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 ffmpeg 安装用包!
标题中的“bash-completion-2.1-6.el7.noarch.rar”指的是一个用于Linux系统的命令行自动补全工具bash-completion的版本2.1,适用于CentOS 6和7,以及RHEL 6和7的环境。这个压缩包是以RAR格式封装的“bash-...
centos6的yum源里面没有bash-completion的包,需要单独下载安装。centos7的yum源里面已包含此安装包,可以通过yum直接安装。 **安装步骤** 1、rpm -ivh bash-...2、退出当前命令行,重新连接,即可使用bash命令补全
- **定期审计**:定期进行系统安全审计,特别是对于bash等关键组件的版本和完整性检查。 - **加强权限管理**:限制普通用户的权限,避免非必要的sudo或su操作。 - **日志监控**:加强对系统日志的监控,及时发现异常...
离线安装包,测试可用
标题 "bash-4.1.2-15" 指的是 Bash shell 的一个特定版本,这是 Linux 和类 Unix 系统中广泛使用的命令行解释器。Bash 是 Bourne-Again SHell 的缩写,它是 GNU 工程的一部分,为用户提供了一个交互式环境来执行命令...
4. **作业控制**:bash允许用户在后台运行进程,通过`job.c`和`jobs.def.h`实现作业的状态跟踪和控制,如`fg`(前台)和`bg`(后台)命令。 5. **红蓝黑通道**:`io-redir.c`和`io-file.c`处理输入输出重定向,这是...
修复redhat6 bash远程执行任意代码漏洞CVE-2014-6271
执行如下命令查看设备是否存在bash安全漏洞。 #env -i X='() { (a)=>\\' bash -c '/dev/stdout echo vulnerable' 2>/dev/null 判定依据 如果以上命令的输出为以下内容则不合规: vulnerable
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
Advanced Bash-Scripting Guide
Bash-debuginfo包是Bash的主要软件包的补充,它包含了一些特殊的符号和元数据,这些信息对于开发人员和系统管理员来说非常有用,当他们需要诊断或调试与Bash相关的错误和问题时。 具体来说,调试信息包括了源代码...
bash-4.1.2-9.el6_2.i686.rpm是centos工具类。
修复bash远程执行漏洞,支持redhat linux 64位操作系统 CVE-2014-6271
Linux CentOS 下 shell 显示-bash-4.1$ 不显示用户名路径解决方法 ...然而,在某些情况下,shell 显示-bash-4.1$ 不...同时,我们也了解了 .bash_profile 文件、PS1 变量、export 命令和 source 命令的作用和使用方法。
出现bash-2.05b的解决办法,出现bash-2.05b的解决办法