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

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

# type type
type is a shell builtin
# type command
command is a shell builtin
# type which
which is hashed (/usr/bin/which)

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

# 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

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

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

$ 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; }

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

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

转载于:https://www.cnblogs.com/tuzkee/p/3755230.html

[SHELL]判断一个命令是否存在相关推荐

  1. linux shell 判断一个命令是否存在

    首先要说明的是,不要使用which来进行判断,理由如下: 1.which非SHELL的内置命令,用起来比内置命令的开销大,并且非内置命令会依赖平台的实现,不同平台的实现可能不同. # type typ ...

  2. linux 脚本 变量为空,Shell判断一个变量是否为空

    判断一个变量是否为空 . 1. 变量通过" "引号引起来 如下所示:,可以得到结果为 IS NULL. #!/bin/sh para1= if [ ! -n "$para ...

  3. linux shell 判断一个文件是不是链接文件

    #!/bin/bash if [ -h "/nas/kvm_hcs/backup" ] then         echo "yes" fi

  4. Shell编程——退出状态(if语句判断某个命令的退出状态)

    以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除. 一.退出状态 (1)不管是 Bash 内置命令,还是外部的 Linux 命令,还是自定义的 Shell 函数,当它运行结束或者退出时,都会 ...

  5. linux shell 文件空,linux shell编程 如何判断一个文件是否为空

    shell 判断文件/目录是否为空 jfkidear144932015-01-15 shell中如何判断一个变量是否为空 l_nan365492014-07-14 在shell中如何判断一个变量是否为 ...

  6. Shell、内外部命令——Linux基本命令(2)

    1.Shell Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. shell也被称为LINUX的命令解释器(commandint ...

  7. linux内外部命令,Shell、内外部命令――Linux基本命令(2)

    1.Shell Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. shell也被称为LINUX的命令解释器(commandint ...

  8. Linux 命令的执行过程/Shell提示符/alias命令

    在 Linux 系统中"一切皆文件",Linux 命令也不例外.那么,当编辑完成 Linux 命令并回车后,系统底层是怎么执行的? 1) 内核层 内核层是 UNIX/Linux 系 ...

  9. shell介绍,命令历史,命令补全和别名 ,通配符, 输入输出重定向

    2019独角兽企业重金招聘Python工程师标准>>> shell介绍 shell是一个命令解释器,提供用户和机器之间的交互: 支持特定语法,比如逻辑判断.循环: 每个用户都可以有自 ...

最新文章

  1. matlab 信号的原子产生,MATLAB随机产生原子结构代码
  2. 三星笔记本桌面计算机图标消失,重启电脑我的电脑图标不见了怎么处理
  3. xcode7.2 真机测试
  4. 几款好用超赞的Google Chrome插件
  5. Spring MVC开启注解
  6. python 相对导入_Python相对导入机制详解
  7. 单片机3种烧录方式解析
  8. 「PMP答题卡」真实模拟PMP考试
  9. 平面直角坐标系中的旋转公式_难点解析丨空间直线、平面平行的判定及其性质...
  10. Arcgis Server服务中rest服务和wms服务的对应关系
  11. 快手往事:得老铁者,失天下
  12. 如何用Python写一个小游戏(1)
  13. zjs-my-diary-20200527
  14. 脱离文档流和恢复文档流的方法
  15. 大数据之hive:行列转换系列总结
  16. 【CSS】元素的伪类
  17. 89.网络安全渗透测试—[常规漏洞挖掘与利用篇5]—[文件包含漏洞详解实战示例]
  18. The Kouga Ninja Scrolls(2018沈阳现场E+切比雪夫距离+线段树维护最大次大最小次小)
  19. 第2天2021-08-09
  20. 数学基础_设随机变量X1,X2,…Xn相互独立,且都服从(0,θ)上的均匀分布。求U=max{X1,X2,…Xn}数学期望

热门文章

  1. Internet流量监管机制之漏桶算法和令牌桶算法
  2. OpenGL基础53:阴影映射(下)
  3. Zhang-Suen细化算法讲解及实现
  4. 利用膨胀和腐蚀获取图像边缘 matlab实现
  5. python应用系列教程——python使用smtp上传邮件,使用pop3下载邮件
  6. js中的4种函数调用模式:函数调用、方法调用、构造器调用、间接调用
  7. Python实现对于文件的分类
  8. zynq文档阅读pg144-axi-gpio之AXI GPIO IP核
  9. quartus仿真25:JK触发器构成的模7计数器(分析)
  10. 计算机操作视频及运用方式,电脑上可以使用什么方法来编辑、制作视频?