1. 直接执行
优点:简单、直接。
缺点:会启动程序,对于rm 、python等命令需要加上没有其它副作用的参数。如查看版本的参数–version。
# 方法1
ls &> /dev/null
if [ $? -eq 0 ]
then
echo "exist"
fi
# 方法2
if python --version &> /dev/null
then
echo "exist"
fi
2. 内建命令
内建命令相对稳定
POSIX compatible:
- command(兼容性更好)
# 方法1
command -v ls &> /dev/null
if [ $? -eq 0 ]
then
echo "exist"
fi
# 方法2
if command -v python &> /dev/null
then
echo "exist"
fi
For Bash specific environments:
- type
- hash
3. 外部工具
- which
最好避免使用 which,做为一个外部的工具,并不一定存在,在发行版之间也会有区别,有的系统的 which 命令不会设置有效的 exit status,存在一定的不确定性。 - whereis
与which类似
参考
shell中如何判断某一命令是否存在
How can I check if a program exists from a Bash script?
How can I check if a command exists in a shell script? [duplicate]
shell编程判断一个命令是否存在?