我想我错过了一些非常明显的东西。但是下面的代码不应该产生相反的反应吗?我想如果使用语句“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
答案 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