无法在bash中打印带括号的字符串

时间:2015-05-04 14:18:43

标签: bash

尝试在bash脚本中打印一个字符串,但它一直在改变我。

$> /usr/local/bin/bash --version
GNU bash, version 4.3.33(1)-release (x86_64-apple-darwin14.1.0)

以下是三种相同的简单脚本,只有一种方法无法正常工作

将按预期打印role[ba]

#!/usr/local/bin/bash

default="role[ba]"     
echo $default
exit 1

打印roles而不是role[bas] 不期望

#!/usr/local/bin/bash

default="role[bas]"     
echo $default
exit 1

按预期打印role[foo]

#!/usr/local/bin/bash

default="role[foo]"     
echo $default
exit 1

我对bash不太了解,为什么我不能在其中打印字符串w / role[bas]

1 个答案:

答案 0 :(得分:1)

$ touch roles
$ echo role[abc]
role[abc]
$ echo role[rst]
roles
$ echo role[foo]

[]是shell globbing语法(字符类)的一部分。如果您不想要使用globbing,请引用您的变量。如果您不想要分词,也一样。基本上,总是引用您的变量,除非您有理由不这样做。

所以:

echo "$default"