为什么包含\ n的bash变量不等于其副本?

时间:2014-11-06 15:03:02

标签: bash variables if-statement newline

设置后:

var1="a\nb"
var2="$var1"

我希望$var1$var2相等;但是:

[[ $var1 == $var2 ]] && echo yes || echo no

返回no。那是为什么?

1 个答案:

答案 0 :(得分:8)

您必须引用以执行字符串比较:

[[ "$var1" == "$var2" ]]

这样可行:

$ var1="a\nb"
$ var2="$var1"
$ [[ "$var1" == "$var2" ]] && echo yes || echo no
yes

为什么会这样?

来自评论chepner indicates

  

没有引号,$ var2被解释为模式,而不是字符串,   并且\ n被视为常规n。