if 检查 yum 或 apt 的条件

if 检查 yum 或 apt 的条件

我尝试编写一个 Bash 脚本来自动设置 Linux 机器。根据安装的操作系统、Ubuntu 或 CentOS,我想运行不同的东西。但不知怎的, if 条件似乎不起作用(至少在 CentOS 上)。

if [[ -n "command -v apt-get" ]]; then
  echo "apt-get is used here"

elif [[ -n "command -v yum" ]]; then
  echo "yum is used here"

else
  echo "I have no Idea what im doing here"
fi

在 CentOS 上,command -v apt-get我的 shell 中没有返回任何内容,但脚本仍然运行该部分。

我不确定我在这里想念什么。

答案1

command你根本没有执行。你需要使用命令替换执行它(即$(...)或不太受欢迎的反引号)。您所做的只是检查字符串,因此第一个if语句始终为真。

但要检查是否存在,您不需要检查输出command- 只需测试返回代码就足够了。

#!/bin/bash

if command -v apt-get >/dev/null; then
  echo "apt-get is used here"
elif command -v yum >/dev/null; then
  echo "yum is used here"
else
  echo "I have no Idea what im doing here"
fi

相关内容