Bash if 子句未按预期工作

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 根本没有执行任何操作!

如果这个问题已经得到解答,我很抱歉,但我的谷歌搜索没有找到这个特定的错误

答案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

相关内容