Bash 无法与if条件进行正确比较

Bash 无法与if条件进行正确比较,bash,shell,Bash,Shell,我在下面写了非常简单的逻辑,但它总是抱怨我的if条件 这是我的密码: #!/bin/sh UBUNTU_VERSION=`lsb_release -r | awk '{ print $2}'` echo "UBUNTU_VERSION - $UBUNTU_VERSION" if [[ "$UBUNTU_VERSION" -eq "14.04" ]]; then echo "Ubuntu 14.04" else echo "Not Ubuntu 14.04"

我在下面写了非常简单的逻辑,但它总是抱怨我的if条件

这是我的密码:

#!/bin/sh

UBUNTU_VERSION=`lsb_release -r |  awk '{ print $2}'`
echo "UBUNTU_VERSION - $UBUNTU_VERSION"

if [[ "$UBUNTU_VERSION" -eq "14.04" ]];
then
        echo "Ubuntu 14.04"
else
        echo "Not Ubuntu 14.04"
fi
我得到的错误是:

./test.sh: 6: ./1.sh: [[: not found
./test.sh: 6: [: Illegal number: 14.04
如果我将代码更改为:

if [ "$UBUNTU_VERSION" -eq "14.04" ];

我得到的错误是:

./test.sh: 6: ./1.sh: [[: not found
./test.sh: 6: [: Illegal number: 14.04
我已经提到了这个链接来更正我的代码,但我无法修复:

  • 使用
    #/bin/bash
    shebang位于顶部,用于使用bash语法
  • eq
    仅用于整数比较,请使用
    =
    =
  • 使用
    $(…)
    替换命令,而不是老式的、有缺陷的反向标记
修改代码:

#!/bin/bash

UBUNTU_VERSION=$(lsb_release -r |  awk '{ print $2}')
echo "UBUNTU_VERSION - $UBUNTU_VERSION"

if [[ $UBUNTU_VERSION == "14.04" ]];
then
        echo "Ubuntu 14.04"
else
        echo "Not Ubuntu 14.04"
fi
  • 使用
    #/bin/bash
    shebang位于顶部,用于使用bash语法
  • eq
    仅用于整数比较,请使用
    =
    =
  • 使用
    $(…)
    替换命令,而不是老式的、有缺陷的反向标记
修改代码:

#!/bin/bash

UBUNTU_VERSION=$(lsb_release -r |  awk '{ print $2}')
echo "UBUNTU_VERSION - $UBUNTU_VERSION"

if [[ $UBUNTU_VERSION == "14.04" ]];
then
        echo "Ubuntu 14.04"
else
        echo "Not Ubuntu 14.04"
fi

[[
是bash ism,即它是
bash
关键字


当您将脚本解释为
sh
,它可能不是
bash
,并且不支持
[
dash
?),因此出现错误。

[[
是bash ism,即它是
bash
关键字


当您将脚本解释为
sh
,它可能不是
bash
,并且不支持
[[/code>(
dash
?),因此出现错误。

注意:-eq,-ne,-gt,-lt用于比较整数。对于字符串,它将不起作用。您需要使用==,!=

  UBUNTU_VERSION=`lsb_release -r |  awk '{ print $2}'`
   echo "UBUNTU_VERSION - $UBUNTU_VERSION"

if [ "$UBUNTU_VERSION" == "14.04" ];
then
        echo "Ubuntu 14.04"
else
        echo "Not Ubuntu 14.04"
fi

注意:-eq,-ne,-gt,-lt用于比较整数。对于字符串,它将不起作用。您需要使用==,!=

  UBUNTU_VERSION=`lsb_release -r |  awk '{ print $2}'`
   echo "UBUNTU_VERSION - $UBUNTU_VERSION"

if [ "$UBUNTU_VERSION" == "14.04" ];
then
        echo "Ubuntu 14.04"
else
        echo "Not Ubuntu 14.04"
fi

使用“=”比较器。-eq保留用于整数比较。使用“=”比较器。-eq保留用于整数比较。