所以这可能是一种愚蠢的方法,但是我想检查是否通过脚本安装了pip,所以我运行了pip version命令,并检查命令的前3个字符是否为“ pip”,以及所以我可以说我知道安装了pip。问题是当我运行此命令并收到command not found
错误时,逻辑仍然认为pip已安装。为什么是?返回的command not found
错误是什么?不能正确点子,为什么不安装点子?还有什么更好的方法来检测是否已安装pip?
pip=$(sudo /root/.local/bin/pip -V | cut -c 1-3)
if [[ pip != "pip" ]]; then
echo "Installing pip..."
curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py
sudo /workplace/user/package/src/EnvImprovement/bin/python2.7 get-pip.py --user
else
echo "Pip detected."
fi
答案 0 :(得分:1)
您正在测试字符串pip
是否等于字符串pip
。不涉及pip
变量。
与Python不同,pip
和"pip"
在Shell脚本中是等效的。 "pip"
suppress special interpretation of a number of characters中的引号,实际上pip
中都没有引号。您需要$pip
来执行变量扩展。
即使那样,硬编码/root/.local/bin/pip
也没有多大意义,与测试可执行文件是否在该路径上相比,通过硬编码路径执行pip以确定其是否存在似乎是一个奇怪的主意。完全不同的方法。
您可能应该使用command -v pip
代替当前的方法。