之前我一直是在用 which
来判断 linux 命令是否存在的,但是它并不能用来检查内置命令和函数是否存在。
command_exists() { which "$@" > /dev/null 2>&1}command_exists lsecho "检查外部命令:" $?function t (){ echo "I am a function"}command_exists techo "检查函数:" $?command_exists cdecho "检查内置命令:" $?command_exists sldjecho "检查没有的命令:" $?
检查外部命令: 0检查函数: 1检查内置命令: 1检查没有的命令: 1
这个脚本里面也实现了一个 command_exists
函数,不过是使用bash内建的 command
命令来实现的。
command_exists() { command -v "$@" > /dev/null 2>&1}
使用 command -v
检查命令时,当命令是已定义的函数,内建命令或者 PATH
中能找到的外部命令时都,返回值都是0,否则会返回1。
command_exists() { command -v "$@" > /dev/null 2>&1}command_exists lsecho "检查外部命令:" $?function t (){ echo "I am a function"}command_exists techo "检查函数:" $?command_exists cdecho "检查内置命令:" $?command_exists sldjecho "检查没有的命令:" $?
检查外部命令: 0检查函数: 0检查内置命令: 0检查没有的命令: 1
这确实比用 which
要更好用。