当前位置:   article > 正文

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

command -v

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

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

demo:

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

如果系统不支持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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

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]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/614308
推荐阅读
相关标签
  

闽ICP备14008679号