我尝试编写一个 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