【BASH】判断命令是否成功执行
2009-04-27 13:08
281 查看
问题:
需要在成功执行某个命令之后执行一个命令。比如,你需要进入某个目录,删除其中所有的文件,但是如果cd命令失败,你就不去执行删除的动作(比如权限不允许,或者你把目录的名字输入错误)
解决方案:
可以使用cd命令的返回值($?)并结合if语句进行判断。
cd
mytmp
if
(( $? )); then rm * ; fi
讨论:
很明显,直接输入命令的时候,是不需要进行这个判断的。cd的所有错误信息都一目了然的时候,你肯定不会去执行rm操作。但是脚本就是另外一回事情了,如果你不期望删除你工作目录的文件,那么检测就是必须的了。
比如你在某个没有mytmp的目录执行了脚本,cd命令会失败,有了这个判断,当前的目录会保持原样。如果没有这个if判断,脚本会直接执行下面的语句,rm
*会删除当前目录所有的文件。
那么$?是如何得到的呢?它是命令的返回值,对c程序员来说,这个值也就是赋给exit函数的参数,比如exit(4)会返回4.对于脚本来说,0认为是成功,非零认为是失败。
在编写脚本的时候,你会期望你的脚本返回正确的值,从而,$?会正确的设置,如果你不这么做,这个值会保留最后一个命令的返回值,这应该不是你期望的。
需要在成功执行某个命令之后执行一个命令。比如,你需要进入某个目录,删除其中所有的文件,但是如果cd命令失败,你就不去执行删除的动作(比如权限不允许,或者你把目录的名字输入错误)
解决方案:
可以使用cd命令的返回值($?)并结合if语句进行判断。
cd
mytmp
if
(( $? )); then rm * ; fi
讨论:
很明显,直接输入命令的时候,是不需要进行这个判断的。cd的所有错误信息都一目了然的时候,你肯定不会去执行rm操作。但是脚本就是另外一回事情了,如果你不期望删除你工作目录的文件,那么检测就是必须的了。
比如你在某个没有mytmp的目录执行了脚本,cd命令会失败,有了这个判断,当前的目录会保持原样。如果没有这个if判断,脚本会直接执行下面的语句,rm
*会删除当前目录所有的文件。
那么$?是如何得到的呢?它是命令的返回值,对c程序员来说,这个值也就是赋给exit函数的参数,比如exit(4)会返回4.对于脚本来说,0认为是成功,非零认为是失败。
在编写脚本的时候,你会期望你的脚本返回正确的值,从而,$?会正确的设置,如果你不这么做,这个值会保留最后一个命令的返回值,这应该不是你期望的。
相关文章推荐
- 判断命令是否成功执行 .
- system执行linux命令通过返回值判断是否成功
- 如何在shell脚本中,判断一个基本命令执行是否成功?
- shell 中如何判断前一个命令是否执行成功
- system函数返回(如何判断调用的shell命令是否执行成功)
- shell中判断前一个命令是否执行成功
- shell 中如何判断前一个命令是否执行成功
- C语言典型代码---执行shell命令并判断是否成功
- shell 中如何判断前一个命令是否执行成功
- 判断./configure,make等长输出命令是否执行成功
- 如何在shell脚本中,判断一个基本命令执行是否成功?
- C# 在DOS下执行命令并判断是否执行成功!
- shell中判断前一个命令是否执行成功
- shell脚本中判断上一个命令是否执行成功
- linux中判断一个命令是否执行成功
- python 如何判断调用系统命令是否执行成功
- 通过system返回值判断 命令是否正确执行
- 判断SQL语句是否执行成功
- 在ASP中判断SQL语句是否执行成功 还不错,顶一个
- 判断adodb php执行insert或update是否成功