变量号是否被视为字符串?

变量号是否被视为字符串?

这是我从一本书(The Linux Command Line)中得到的脚本

#!/bin/bash
# trouble: script to demonstrate common errors
number=1
if [ $number = 1 ]; then
echo "Number is equal to 1."
else
echo "Number is not equal to 1."
fi

我对这个表达感到困惑:

$number = 1

在 [ 命令中,= 运算符用于比较字符串,对吗?或者那里发生了什么?

字符串是用引号还是不带引号来标识的?

答案1

[ $number = 1 ]字符串比较和数字比较之间的区别[ $number -eq 1 ]在于,根据上下文,相等的含义有所不同。例如:

number="1"
if [ $number -eq 01 ]; then
  echo "true"
else
  echo "false"
fi

上面的代码将回显,true因为01在数值上等于1, while ,此代码块:

number="1"
if [ $number = 01 ]; then
  echo "true"
else
  echo "false"
fi

会回显,false因为该字符串01与 string 不同1

答案2

有关条件运算符的文档,您需要参考

相关内容