Так что это, возможно, был глупым способом сделать это, но я хотел проверить, был ли pip установлен через скрипт, поэтому я запустил команду версии pip и проверил, были ли первые три символа команды "pip", и если бы я мог Я знал, что пип был установлен. Проблема в том, что когда я запускаю это и получаю command not found
ошибку, логика все еще думает, что пипс установлен. Почему? Что это за 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
Вы проверяете ли строка pip
равен строкой pip
, который это. Переменная pip
не задействована.
В отличие от Python, pip
и "pip"
эквивалентны в сценарии оболочки. Кавычки в "pip"
подавляют специальную интерпретацию ряда символов, ни одна из которых фактически не присутствует в pip
. Вам нужно $pip
для выполнения расширения переменной.
Даже тогда /root/.local/bin/pip
не имеет особого смысла, и выполнение pip жестко запрограммированным путем для определения того, существует ли это, кажется странной идеей по сравнению с проверкой того, существует ли исполняемый файл на этом пути или выполняется совсем другой подход.
Вероятно, вы должны использовать command -v pip
вместо текущего подхода.