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

标签 bash variables if-statement newline

设置后:

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

我希望 $var1$var2 相等;然而:

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

返回没有。这是为什么?

最佳答案

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

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

所以这是可行的:

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

为什么会这样?

从评论中,chepner indicates :

Without the quotes, $var2 is interpreted as a pattern, not a string, and the \n is treated as a regular n.

关于bash - 为什么包含\n 的 bash 变量不等于它的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782601/

相关文章:

string - 可以一次使用多个 BASH 变量操作吗?

Java 循环效率。如果继续或如果

linux - 自动完成 AWK 变量

linux - 如何使用 "ctrl c"杀死所有进程?

javascript - 创建javascript变量的最佳方法

java - if/else 不起作用并表示 else 需要 if

if-statement - 如何在 Liquid 的 if 语句中使用多个参数

bash - "local n=${x##*wlan}"是什么意思?

linux - cd 命令在 bash 脚本中不起作用

c++ - 变量似乎在自行改变值(value)