首先要说明的是,不要使用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; }

linux shell 判断一个命令是否存在相关推荐

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

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

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

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

  3. linux shell中的命令自动补全(compgen complete)与 命令行参数解析

    linux shell中的命令自动补全(compgen complete)与 命令行参数解析 标签: shell脚本 2013-12-31 21:56 6661人阅读 评论(6) 收藏 举报 分类: ...

  4. 执行远程linux命令,linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...

  5. linux shell sed awk 命令(2)-awk

    linux shell sed awk 命令(2)-awk awk语法格式: awk [选项] -f program-file [ -- ] file ... 选项: -F fs, --field-s ...

  6. linux远程执行shell命令行,linux shell 远程执行命令--ftp

    linux shell 远程执行命令--ftp 2018-12-07 ftp有很多命令,熟悉这些命令你能大大的提高工作效率: FTP命令行格式为: ftp -v -d -i -n -g [主机名] , ...

  7. Linux Shell 判断块设备节点是否存在

    /************************************************************************** Linux Shell 判断块设备节点是否存在* ...

  8. 【shell】Linux Shell远程执行命令

    目录 shell远程执行 前提条件: 对于简单的命令: 对于脚本的方式: SSH命令格式 主要参数说明 ssh控制远程主机,远程执行命令步骤 准备工作 基于公私钥认证远程登录可能存在的不足 ssh 执 ...

  9. linux 脚本判断一个目录不存在

    linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...

最新文章

  1. 【组队学习】【35期】深入浅出Pytorch
  2. ROW_NUMBER() OVER函数的基本用法用法
  3. python3.6.5安装-linux安装python3.6.5
  4. 黄猫被汽车撞死 花猫雨夜苦守
  5. php下载七牛整个文件夹,七牛云存储文件批量下载工具 - 行客工作室
  6. SAP Digital Asset Management by OpenText for CRM
  7. 基于OIDC(OpenID Connect)的SSO
  8. Linux中创建用户并且配置sudo权限,百分百简单有效
  9. 服务器性能发挥,浪潮服务器发挥性能优势,算力“焦虑”问题被解决
  10. android studio中添加新的model时候
  11. 三维计算机视觉(六)--3DSC(3D形状上下文特征)
  12. 【Java笔记】Java开发实战经典 - 第六章
  13. 控制台(console)与终端(terminal)理解
  14. BZOJ1022: [SHOI2008]小约翰的游戏John
  15. 普通话测试软件测分准吗,普通话学习测试类 | 普通话测试APP,能做到测试、学习提高两不误吗?...
  16. 让我来问问你,Python不能做什么?
  17. 2020.11.04 使用OpenCV进行图像阈值分割操作【OpenCV C++】
  18. 分析器错误信息:nbsp;无法识别的配置节…
  19. 咪咕代理php,【独家创业】新七星修改2开正咪咕影视7.2全版/支持自定义解析/支持PHP7.0及以上...
  20. Sqlyog之excel数据导入方法

热门文章

  1. 5G NGC — AUSF 鉴权服务功能
  2. OpenStack Placement Project(Rocky to Train)
  3. EVT DVT PVT TP PP MP分别指哪个阶段
  4. 探索移动端的搜索设计
  5. ORACLE分区表详解
  6. 《Java Web高级编程——涵盖WebSockets、Spring Framework、JPA H
  7. (译)KVO的内部实现
  8. 需求的推动力-网线啥的
  9. 经过五年测试 维基利用HTML5迈入视频时代
  10. 简单说一下Nginx配置说明