学过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的约定。
分享到:
相关推荐
cp -pr /etc/skel/.bash* /home/test/ #/home/test是用户目录 改变用户家目录:usermod -md /tmptest test 以上就是小编为大家带来的解决ssh远程登陆linux显示-bash-4.1$的问题全部内容了,希望大家多多支持软件开发...
linux 服务器GNU Bash小于版本4.3有操作系统命令注入漏洞,需要对bash升级,下载解压 #tar zxvf bash-4.4.tar.gz #cd bash-4.4 #./configure (如果centos7编译失败,请先安装#yum install gcc) #make #make ...
在centos6或rhel6 操作系统安装bash-completion-2.1-6.el7.noarch.rpm后,重启即生效
bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 ffmpeg 安装用包!
AIX-6系统的bash-5安装包
bash-4.1.2-15
执行如下命令查看设备是否存在bash安全漏洞。 #env -i X='() { (a)=>\\' bash -c '/dev/stdout echo vulnerable' 2>/dev/null 判定依据 如果以上命令的输出为以下内容则不合规: vulnerable
离线安装包,测试可用
Footnoted_advanced_bash-scripting_guide_2014-03-10_v.10_abs-guide Footnoted_advanced_bash-scripting_guide_2014-03-10_v.10_abs-guide Footnoted_advanced_bash-scripting_guide_2014-03-10_v.10_abs-guide ...
bash-4.1.2-9.el6_2.i686.rpm是centos工具类。
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
修复redhat6 bash远程执行任意代码漏洞CVE-2014-6271
出现bash-2.05b的解决办法,出现bash-2.05b的解决办法
Advanced Bash-Scripting Guide
通过查看文档和自己的测试,bashdb-4.2.0-7 和centos7的bash-4.2.46版本匹配,并且编译顺利. 使用方法: 解压bashdb [root]#tar xf bashdb-4.2-0.7.tar.gz -C /usr/src 编译安装bashdb 编译安装bashdb有两种方法,...
Advanced Bash-Scripting Guide 3.9.1 (包括中译本) 作者:thegrendel 主页:...最重要的是作者一直跟更新和修正此文档,目前的英文版本是Version 4.2;中文版最新版本是3.9.1.
bash-4.1.2-15.el6_5.2.x86_64
bash-handbook-zh-CN, 一种中文中文翻译 bash-handbook-zh-CN前言Shells与模式交互模式非交互模式返回值注释变量局部变量环境变量位置参数Shell扩展大括号扩展命令置换算数扩展单引号和双引号数组数
centos6的yum源里面没有bash-completion的包,需要单独下载安装。centos7的yum源里面已包含此安装包,可以通过yum直接安装。 **安装步骤** 1、rpm -ivh bash-...2、退出当前命令行,重新连接,即可使用bash命令补全
从官网上获得的bash-4.0源码,对学习linux下的shell程序很有帮助。