[SHELL]判断一个命令是否存在
首先要说明的是,不要使用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]判断一个命令是否存在相关推荐
- linux shell 判断一个命令是否存在
首先要说明的是,不要使用which来进行判断,理由如下: 1.which非SHELL的内置命令,用起来比内置命令的开销大,并且非内置命令会依赖平台的实现,不同平台的实现可能不同. # type typ ...
- linux 脚本 变量为空,Shell判断一个变量是否为空
判断一个变量是否为空 . 1. 变量通过" "引号引起来 如下所示:,可以得到结果为 IS NULL. #!/bin/sh para1= if [ ! -n "$para ...
- linux shell 判断一个文件是不是链接文件
#!/bin/bash if [ -h "/nas/kvm_hcs/backup" ] then echo "yes" fi
- Shell编程——退出状态(if语句判断某个命令的退出状态)
以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除. 一.退出状态 (1)不管是 Bash 内置命令,还是外部的 Linux 命令,还是自定义的 Shell 函数,当它运行结束或者退出时,都会 ...
- linux shell 文件空,linux shell编程 如何判断一个文件是否为空
shell 判断文件/目录是否为空 jfkidear144932015-01-15 shell中如何判断一个变量是否为空 l_nan365492014-07-14 在shell中如何判断一个变量是否为 ...
- Shell、内外部命令——Linux基本命令(2)
1.Shell Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. shell也被称为LINUX的命令解释器(commandint ...
- linux内外部命令,Shell、内外部命令――Linux基本命令(2)
1.Shell Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. shell也被称为LINUX的命令解释器(commandint ...
- Linux 命令的执行过程/Shell提示符/alias命令
在 Linux 系统中"一切皆文件",Linux 命令也不例外.那么,当编辑完成 Linux 命令并回车后,系统底层是怎么执行的? 1) 内核层 内核层是 UNIX/Linux 系 ...
- shell介绍,命令历史,命令补全和别名 ,通配符, 输入输出重定向
2019独角兽企业重金招聘Python工程师标准>>> shell介绍 shell是一个命令解释器,提供用户和机器之间的交互: 支持特定语法,比如逻辑判断.循环: 每个用户都可以有自 ...
最新文章
- matlab 信号的原子产生,MATLAB随机产生原子结构代码
- 三星笔记本桌面计算机图标消失,重启电脑我的电脑图标不见了怎么处理
- xcode7.2 真机测试
- 几款好用超赞的Google Chrome插件
- Spring MVC开启注解
- python 相对导入_Python相对导入机制详解
- 单片机3种烧录方式解析
- 「PMP答题卡」真实模拟PMP考试
- 平面直角坐标系中的旋转公式_难点解析丨空间直线、平面平行的判定及其性质...
- Arcgis Server服务中rest服务和wms服务的对应关系
- 快手往事:得老铁者,失天下
- 如何用Python写一个小游戏(1)
- zjs-my-diary-20200527
- 脱离文档流和恢复文档流的方法
- 大数据之hive:行列转换系列总结
- 【CSS】元素的伪类
- 89.网络安全渗透测试—[常规漏洞挖掘与利用篇5]—[文件包含漏洞详解实战示例]
- The Kouga Ninja Scrolls(2018沈阳现场E+切比雪夫距离+线段树维护最大次大最小次小)
- 第2天2021-08-09
- 数学基础_设随机变量X1,X2,…Xn相互独立,且都服从(0,θ)上的均匀分布。求U=max{X1,X2,…Xn}数学期望