linux shell command -v 判断一个命令是否支持

本文介绍了如何使用Linux shell中的command-v命令来检查docker等命令的支持情况,并通过实例演示了如何在脚本中检查shellcheck是否存在并进行安装。同时,解释了command命令在避免函数冲突和判断命令存在性上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux shell command -v 判断一个命令是否支持

在Linux中,command -v 可以判断一个命令是否支持

demo:

if command -v docker >/dev/null 2>&1;then 
   echo "yes"
else 
   echo "no"
fi

如果系统不支持docker,则为no。

2>&1:
在Linux系统中0 1 2是一个文件描述符
在这里插入图片描述
从上表看的出来,我们平时使用的
echo “hello” > t.log
其实也可以写成
echo “hello” 1> t.log

2>&1 就是把标准错误输出标准输出中。

实战demo

判断 shellcheck 命令是否存在,不存在则安装shellcheck :

#!/bin/bash

# fast fail.
set -eo pipefail

SHELLCHECK_VERSION=0.7.1
INSTALL_DIR="${HOME}/bin/"
mkdir -p "$INSTALL_DIR" || true

function install_shellcheck {
  if ! command -v shellcheck &> /dev/null; then
      MACHINE=$(uname -m);
      TMPFILE=$(mktemp)
      rm "$TMPFILE"
      mkdir -p "$TMPFILE"/
      curl -L -o "$TMPFILE"/out.xz "https://github.com/koalaman/shellcheck/releases/download/v${SHELLCHECK_VERSION}/shellcheck-v${SHELLCHECK_VERSION}.$(uname -s | tr '[:upper:]' '[:lower:]').${MACHINE}.tar.xz"
      tar -xf "$TMPFILE"/out.xz -C "$TMPFILE"/
      cp "${TMPFILE}/shellcheck-v${SHELLCHECK_VERSION}/shellcheck" "${INSTALL_DIR}/shellcheck"
      rm -rf "$TMPFILE"
      chmod +x "${INSTALL_DIR}"/shellcheck
  fi
}

install_shellcheck

command 命令

command命令在shell脚本里面,如果发现有个函数和我们需要执行的命令同名,我们可以用command用来强制执行后面的命令,而不是同名函数,然后我们也可以在shell脚本里面判断莫个命令是否存在,我们平时一般用which命令也行。

[root@dev workspace]# command --help
command: command [-pVv] command [arg ...]
    Execute a simple command or display information about commands.

    Runs COMMAND with ARGS suppressing  shell function lookup, or display
    information about the specified COMMANDs.  Can be used to invoke commands
    on disk when a function with the same name exists.

    Options:
      -p    use a default value for PATH that is guaranteed to find all of
            the standard utilities
      -v    print a description of COMMAND similar to the `type' builtin
      -V    print a more verbose description of each COMMAND

    Exit Status:
    Returns exit status of COMMAND, or failure if COMMAND is not found.
[root@dev workspace]#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值