【BASH】判断命令是否成功执行

翻译 2009年04月27日 13:08:00

 

问题:

需要在成功执行某个命令之后执行一个命令。比如,你需要进入某个目录,删除其中所有的文件,但是如果cd命令失败,你就不去执行删除的动作(比如权限不允许,或者你把目录的名字输入错误)

 

解决方案:

可以使用cd命令的返回值($?)并结合if语句进行判断。

cd mytmp

if (( $? )); then rm * ; fi

 

讨论:

很明显,直接输入命令的时候,是不需要进行这个判断的。cd的所有错误信息都一目了然的时候,你肯定不会去执行rm操作。但是脚本就是另外一回事情了,如果你不期望删除你工作目录的文件,那么检测就是必须的了。

比如你在某个没有mytmp的目录执行了脚本,cd命令会失败,有了这个判断,当前的目录会保持原样。如果没有这个if判断,脚本会直接执行下面的语句,rm *会删除当前目录所有的文件。

那么$?是如何得到的呢?它是命令的返回值,对c程序员来说,这个值也就是赋给exit函数的参数,比如exit(4)会返回4.对于脚本来说,0认为是成功,非零认为是失败。

在编写脚本的时候,你会期望你的脚本返回正确的值,从而,$?会正确的设置,如果你不这么做,这个值会保留最后一个命令的返回值,这应该不是你期望的。

 

如何获取shell函数的返回值及shell命令的返回值?

1、获取shell函数调用的返回值: #!/bin/sh info() { cat jlb.sh } res=`info` echo "state: "$? echo "res...

bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示

bash有以下特性:1)、命令执行状态返回值:Linux命令或程序执行后有两类结果,分别为:(1)、命令或程序的返回值;例如:# echo “haha” 返回值为:haha(2)、命令或程序的执行状态...

shell 脚本中获取命令的输出

shell脚本中获取命令执行返回值需要注意的地方
  • haiqinma
  • haiqinma
  • 2016年12月15日 17:47
  • 10176

Bash函数的参数和返回值

由于Bash的易于编程等特点,是众多Shell中比较常用的一种。 Bash命令行参数 在使用wget的时候,我喜欢加上一个-c的参数,这样可以让wget启用断点续传功能。这里的-c就是一个...

【BASH】检测命令执行的结果

 问题:你需要知道所运行的命令是否成功 解决方案:如果命令失败shell变量$?会被置为非零值,命令或shell脚本的编写者可以建立下面的习惯$somecommanditworks...$echo $...

shell 中如何判断前一个命令是否执行成功

通过判断返回值来解决: if [ $? -eq 0 ];then   命令正确的分支 else   命令失败的分支 fi...
  • yujunf
  • yujunf
  • 2014年02月26日 17:58
  • 23040

如何在shell脚本中,判断一个基本命令执行是否成功?

$?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败。 if [[ $? -eq 0 ]];then A else b;fi   简单点: mkdir /xxx && e...

Linux下Shell的计时

data命令式linux下的时间显示命令,不是time命令,time命令是对一个command的计时命令:man date…%m month (01..12)%M minute (00..59)%n ...
  • Augusdi
  • Augusdi
  • 2016年08月28日 22:43
  • 3755

Python安装nltk使用Ngram

1、Python的安装 https://www.python.org/downloads/ 下载并安装Python,我安装的是2.7的版本 2、nltk的安装 https://pypi.pyth...

Linux下用bash命令执行名称中带有“(”符号的目录注意事项

***********************************************声明************************************************  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【BASH】判断命令是否成功执行
举报原因:
原因补充:

(最多只允许输入30个字)