码迷,mamicode.com
首页 > 其他好文 > 详细

[SHELL]判断一个命令是否存在

时间:2014-06-29 15:27:20      阅读:1334      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   使用   

首先要说明的是,不要使用which来进行判断,理由如下:

1、which非SHELL的内置命令,用起来比内置命令的开销大,并且非内置命令会依赖平台的实现,不同平台的实现可能不同。

bubuko.com,布布扣
# type type
type is a shell builtin
# type command
command is a shell builtin
# type which
which is hashed (/usr/bin/which)
bubuko.com,布布扣

2、很多系统的which并不设置退出时的返回值,即使要查找的命令不存在,which也返回0

bubuko.com,布布扣
# which ls
/usr/bin/ls
# echo $?
0
# which aaa
no aaa in /usr/bin /bin /usr/sbin /sbin /usr/local/bin /usr/local/bin /usr/local/sbin /usr/ccs/bin /usr/openwin/bin /usr/dt/bin 
# echo $?
0
bubuko.com,布布扣

3、许多系统的which实现,都偷偷摸摸干了一些“不足为外人道也”的事情

所以,不要用which,可以使用下面的方法:

bubuko.com,布布扣
$ command -v foo >/dev/null 2>&1 || { echo >&2 "I require foo but it‘s not installed.  Aborting."; exit 1; }
$ type foo >/dev/null 2>&1 || { echo >&2 "I require foo but it‘s not installed.  Aborting."; exit 1; }
$ hash foo 2>/dev/null || { echo >&2 "I require foo but it‘s not installed.  Aborting."; exit 1; }
bubuko.com,布布扣

 

犀利的原文,可以在这里查看:

http://stackoverflow.com/questions/592620/how-to-check-if-a-program-exists-from-a-bash-script/677212#677212

 

[SHELL]判断一个命令是否存在,布布扣,bubuko.com

[SHELL]判断一个命令是否存在

标签:style   blog   http   java   color   使用   

原文地址:http://www.cnblogs.com/tuzkee/p/3755230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!