【问题标题】:How to check if string is part of command "python --version" in bash?如何检查字符串是否是bash中命令“python --version”的一部分?
【发布时间】:2016-10-10 05:18:36
【问题描述】:

在 bash 中,我想检查是否安装了 Python 2.7。在搜索时我发现了这个:How do I test (in one line) if command output contains a certain string?

在 bash 中,我有这个:

python --version
Python 2.7.11

所以我尝试了这个:

[[ $(python --version) =~ "2.7" ]] || echo "I don't have 2.7"
Python 2.7.11
I don't have 2.7

...我觉得很奇怪,因为我期望它会起作用。

我也试过这个:

if [[ $(python --version) =~ *2.7* ]]
    then
        echo "I have 2.7"
    else
        echo "I don't have 2.7"
fi

...导致:

Python 2.7.11
I don't have 2.7

嗯! 我做错了什么?

【问题讨论】:

    标签: bash


    【解决方案1】:

    python --version 命令输出到stderr

    您可以在测试前将stderr 重定向到stdout

    if [[ $(python --version 2>&1) =~ 2\.7 ]]
        then
            echo "I have 2.7"
        else
            echo "I don't have 2.7"
    fi
    

    【讨论】:

      【解决方案2】:

      您可以通过以下方式进行操作。您可以先通过which 命令检查是否安装了python,然后捕获python --version 的输出

      if which python > /dev/null 2>&1;
      then
          if [[ $(python --version 2>&1) == *2\.7\.11 ]]; then
             echo "Python version 2.7.11 is installed."
          fi 
      else
          echo "No Python executable is found."
      fi
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-15
        • 2014-06-21
        • 2020-10-25
        • 1970-01-01
        • 2019-07-19
        • 2023-03-24
        • 2022-01-09
        • 1970-01-01
        相关资源
        最近更新 更多