如何验证 运行 bash 脚本时是否缺少必需的命令?

How do I verify if required command is missing when running bash script?

我有以下代码来检查缺少的命令:

 All commands
 ALLCMD=(
 route
 ip
 netstat
 tar
 )

 for cmd in ${ALLCMD[*]}
  do
  if ! command -v $cmd &> /dev/null
  then
  echo "Installed"
  echo "$cmd"
  else
  echo "Missing"
  echo "$cmd"
  fi
 done

我只需要显示缺少的命令,因为建议问题已通过删除已安装的部分得到解决

你在循环中有一个 if 语句,正例(条件满足)和负例(条件不满足)都打印了一些东西。如果您不想要这些,只需删除它们。也就是说,如果您只是从 if 中删除 echo 命令,bash 会抱怨:

syntax error near unexpected token `else'

您可以毫无问题地删除 else 分支。所以你必须翻转你 if 的条件。在您的情况下,它已经使用 ! 否定了条件,因此您可以删除它:

if command -v "$cmd" &> /dev/null
then
    echo "Missing"
    echo "$cmd"
fi