`
zhuyuyuseu
  • 浏览: 9587 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

傻瓜学Bash - 退出和退出状态

阅读更多
  学过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的约定。
分享到:
评论

相关推荐

    傻瓜式testlink安装手册

    TestLink 是一款开源的测试管理工具,用于组织和管理软件测试过程。本教程将指导你如何从零开始,一步步地在Linux系统上安装TestLink。首先,你需要准备一个Linux系统的镜像,这里推荐使用CentOS的最小化版,可以从...

    mentohust文件以及使用说明

    若需要退出,按`Ctrl+C`即可。 **5. 常见问题及解决方案** - **网络连接失败**:检查配置文件中的账号、密码和网卡名称是否正确。 - **无法启动mentohust**:可能是因为缺少依赖或权限问题,检查日志`/var/log/...

    redhat下安装oracle10g的总结

    保存并退出,然后使更改立即生效: ```bash # source ~/.bash_profile ``` ##### 4.5 设置主机名和 IP 编辑 `/etc/hosts` 文件,并添加服务器的 IP 地址和主机名: ```bash # echo "192.168.1.100 servername" >...

    非常简单的Shell菜单脚本

    本文介绍的“非常简单的Shell菜单脚本”就是一种基础的Shell脚本应用,它创建了一个简单的菜单系统,使用户能够通过选择编号来执行不同的功能,实现了人机交互的“傻瓜式”操作。 首先,脚本通过`#!/bin/sh`行指定...

Global site tag (gtag.js) - Google Analytics