Bash if语句给出的反应比预期的要快

时间:2018-05-04 20:42:42

标签: bash conditional

我想我错过了一些非常明显的东西。但是下面的代码不应该产生相反的反应吗?我想如果使用语句“if s == d”并且s不等于d那么if语句应该返回false并且不运行以下代码。这似乎不会发生。任何人都可以解释我错过了什么。我认为这是非常明显的事情。

谢谢

s=2
d=3
if ! [ "$s == $d" ]; then         echo "hello"; fi
if [ "$s == $d" ]; then         echo "hello"; fi
hello

1 个答案:

答案 0 :(得分:2)

当您引用两个参数"$s == $d""$s"时,您引用了整个字符串"$d"

这意味着您不会将$s$d进行比较,而是检查"2 == 3"是否为非空字符串(它是)。

这将正确打印"不等于":

s=2
d=3
if ! [ "$s" == "$d" ]; then echo "not equal"; fi
if [ "$s" == "$d" ]; then echo "equal"; fi