您当前的位置:首页 > 计算机 > 系统应用 > Linux

检查 linux 命令是否存在的正确方式

时间:12-14来源:作者:点击数:

之前我一直是在用 which 来判断 linux 命令是否存在的,但是它并不能用来检查内置命令和函数是否存在。

command_exists() {
    which  "$@" > /dev/null 2>&1
}

command_exists ls
echo "检查外部命令:" $?

function t ()
{
    echo "I am a function"
}
command_exists t
echo "检查函数:" $?

command_exists cd
echo "检查内置命令:" $?

command_exists sldj
echo "检查没有的命令:" $?
检查外部命令: 0
检查函数: 1
检查内置命令: 1
检查没有的命令: 1

直到今天看了下 daocloud 提供的配置 docker 加速器脚本(https://get.daocloud.io/daotools/set_mirror.sh)。

这个脚本里面也实现了一个 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 ls
echo "检查外部命令:" $?

function t ()
{
    echo "I am a function"
}
command_exists t
echo "检查函数:" $?

command_exists cd
echo "检查内置命令:" $?

command_exists sldj
echo "检查没有的命令:" $?
检查外部命令: 0
检查函数: 0
检查内置命令: 0
检查没有的命令: 1

这确实比用 which 要更好用。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐