linux 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; }
linux shell 判断一个命令是否存在相关推荐
- [SHELL]判断一个命令是否存在
首先要说明的是,不要使用which来进行判断,理由如下: 1.which非SHELL的内置命令,用起来比内置命令的开销大,并且非内置命令会依赖平台的实现,不同平台的实现可能不同. # type typ ...
- linux shell 判断一个文件是不是链接文件
#!/bin/bash if [ -h "/nas/kvm_hcs/backup" ] then echo "yes" fi
- linux shell中的命令自动补全(compgen complete)与 命令行参数解析
linux shell中的命令自动补全(compgen complete)与 命令行参数解析 标签: shell脚本 2013-12-31 21:56 6661人阅读 评论(6) 收藏 举报 分类: ...
- 执行远程linux命令,linux shell 远程执行命令
经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...
- linux shell sed awk 命令(2)-awk
linux shell sed awk 命令(2)-awk awk语法格式: awk [选项] -f program-file [ -- ] file ... 选项: -F fs, --field-s ...
- linux远程执行shell命令行,linux shell 远程执行命令--ftp
linux shell 远程执行命令--ftp 2018-12-07 ftp有很多命令,熟悉这些命令你能大大的提高工作效率: FTP命令行格式为: ftp -v -d -i -n -g [主机名] , ...
- Linux Shell 判断块设备节点是否存在
/************************************************************************** Linux Shell 判断块设备节点是否存在* ...
- 【shell】Linux Shell远程执行命令
目录 shell远程执行 前提条件: 对于简单的命令: 对于脚本的方式: SSH命令格式 主要参数说明 ssh控制远程主机,远程执行命令步骤 准备工作 基于公私钥认证远程登录可能存在的不足 ssh 执 ...
- linux 脚本判断一个目录不存在
linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...
最新文章
- 【组队学习】【35期】深入浅出Pytorch
- ROW_NUMBER() OVER函数的基本用法用法
- python3.6.5安装-linux安装python3.6.5
- 黄猫被汽车撞死 花猫雨夜苦守
- php下载七牛整个文件夹,七牛云存储文件批量下载工具 - 行客工作室
- SAP Digital Asset Management by OpenText for CRM
- 基于OIDC(OpenID Connect)的SSO
- Linux中创建用户并且配置sudo权限,百分百简单有效
- 服务器性能发挥,浪潮服务器发挥性能优势,算力“焦虑”问题被解决
- android studio中添加新的model时候
- 三维计算机视觉(六)--3DSC(3D形状上下文特征)
- 【Java笔记】Java开发实战经典 - 第六章
- 控制台(console)与终端(terminal)理解
- BZOJ1022: [SHOI2008]小约翰的游戏John
- 普通话测试软件测分准吗,普通话学习测试类 | 普通话测试APP,能做到测试、学习提高两不误吗?...
- 让我来问问你,Python不能做什么?
- 2020.11.04 使用OpenCV进行图像阈值分割操作【OpenCV C++】
- 分析器错误信息:nbsp;无法识别的配置节…
- 咪咕代理php,【独家创业】新七星修改2开正咪咕影视7.2全版/支持自定义解析/支持PHP7.0及以上...
- Sqlyog之excel数据导入方法