bash,测试curl是否存在,如果不存在则安装

Yor*_*ubs 0 bash curl sudo

我用谷歌搜索了很多解决方案,但没有找到一个完全有效的解决方案。我自己的粗略工作是:

[ $(which curl) -eq "" ] || sudo apt install curl
Run Code Online (Sandbox Code Playgroud)

这不太有效,说“预期是一元运算符”。我已经尝试过===,所以我不知道如何进行这样的测试。空输出是否有可能which curl是 $null 而我必须对此进行测试?

或者,有没有办法只运行sudo apt install curl然后2>&null在最后抑制它是否已经安装?

cho*_*oba 5

which如果找不到该程序,则返回失败,因此您可以

which curl &> /dev/null || sudo apt install curl
Run Code Online (Sandbox Code Playgroud)

请注意,如果有人在 $PATH 中有一个名为curl 的不同程序,则该脚本稍后仍可能失败。

-eq比较数字,而不是字符串。