Bash 字符串与整数比较

Bash 字符串与整数比较

这里我看到[[允许字符串和整数之间的比较。

    [usr1@host dir]$ echo $count1
    [1] "0"

    [usr1@host dir]$ echo $count2
    13188

    [usr1@host dir]$ if [[ $count1 -ne $count2 ]]
    > then
    > echo "NE"
    > fi
    bash: [[: [1] "0": syntax error: operand expected (error token is "[1] "0"")

   #this worked fine at one point
   if [[ $count1 -ne $count2 ]] then
      echo "NE"
   fi
   syntax error near unexpected token 'then'  

   if [[ $count1 -ne $count2 ]];    then
      echo "NE"
   fi
   [[: [1] "0": syntax error: operand expected (error token is "[1] "0"")

我对语法的工作方式感到非常困惑。我们如何应对不同的场景?如何防止语法错误,无论值如何变化(我猜这就是它现在给出错误的原因)。

答案1

您的count1变量包含字符串[1] "0"。这是一个八个字符的字符串不是一个整数。

即使价值是公正的,存在的"0"检验也是[[ $count1 -ne $count2 ]]$count1"0"非常不一样from[[ "$count1" -ne "$count2" ]]$count1单个字符串0

相关内容