比较Bash脚本中的变量

时间:2013-04-25 07:50:32

标签: linux bash

查看其他Bash脚本,我看到有人比较变量,如:$S == $T,而有时我看到变量包裹在字符串中:"$S" == "$T"

有些实验似乎表明两者都是一样的。以下演示将在两种情况下打印equal(使用GNU bash,版本4.2.37进行测试):

#!/usr/bin/env bash

S="text"
T="text"

if [[ $S == $T ]]; then
  echo "equal"
fi

if [[ "$S" == "$T" ]]; then
  echo "equal"
fi

我的问题:如果$S == $T"$S" == "$T"之间存在差异,那么它是什么?

1 个答案:

答案 0 :(得分:6)

如果您使用[[它们几乎相同,但不完全......

  

当使用==和!=运算符时,运算符右侧的字符串是    根据Pattern下面描述的规则考虑模式并进行匹配    匹配。 [...]    可以引用模式的任何部分以强制它匹配为字符串。

如果您使用[,则必须使用引号,除非您知道变量不能为空或包含空格。

为了安全起见,您可能希望始终引用所有变量。