【发布时间】:2021-03-09 08:56:03
【问题描述】:
我搜索了许多解决方案,但没有找到一个完全有效的解决方案。我自己的粗活是:
[ $(which curl) -eq "" ] || sudo apt install curl
这不太行,说“一元运算符预期”。我试过= 或==,所以我不知道如何做这样的测试。 which curl 的空输出是否有可能是 $null 并且我必须对此进行测试?
或者,有没有办法只运行sudo apt install curl,然后在最后运行2>&null 来抑制它是否已经安装?
【问题讨论】:
-
简单的解决方法是引用命令替换。当然你可以运行
sudo apt -y install curl >/dev/null 2>&1,但是如果用户没有缓存他们的sudo密码,那将会失败或挂起。 -
@YorSubs :从技术上讲,您不需要测试可执行文件
curl是否存在,您只需测试它是否存在并且在您的PATH 中。此外,您不知道(无论隐藏在名称 curl 后面的内容)是否是您需要的那个版本的 curl。一种替代方法是运行curl --version并解析其输出。 -
我明白你的意思。对
/usr/bin/curl的测试会更加严格(我不需要完全防弹,如果有人将不是curl的下载版本的文件放在那里会很奇怪)。那么我唯一的问题是:不同的发行版是否将curl放在不同的地方,或者/usr/bin/curl会是一个可靠的跨平台位置吗? -
其他发行版不仅可以将 curl 放在其他位置,还可以使用与 apt 不同的安装程序。