Bash if пункт работает не так, как ожидалось

#!/bin/bash
python3 -c "import numpy"
if [ $? ]; then
    echo Numpy needs to be installed
    sudo apt-get python3-numpy
fi
echo Everything is properly installed

Это то, что я пытаюсь запустить.

Предположительно, он проверяет, установлен ли NumPy, и если нет, установите его. Тем не менее, он устанавливается каждый раз, даже если он у меня уже есть.

Когда я изменяю import numpy на import asdfas, он все равно устанавливает numpy, так что if вообще ничего не делает!

Извините, если на этот вопрос уже есть ответ, но в моем поиске Google не было найдено этой конкретной ошибки

2
задан 4 June 2019 в 21:26

1 ответ

Выражение if легко может быть командой, поэтому оператор then выполняется, если команда была выполнена успешно, и оператор else, если нет. Используя !, можно инвертировать это поведение, поэтому просто используйте if ! python3 …:

#!/bin/bash
if ! python3 -c "import numpy"; then
  echo Numpy needs to be installed
  sudo apt-get python3-numpy
fi
echo Everything is properly installed
2
ответ дан 4 June 2019 в 21:26

Другие вопросы по тегам:

Похожие вопросы: