尝试在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]
?
答案 0 :(得分:1)
$ touch roles
$ echo role[abc]
role[abc]
$ echo role[rst]
roles
$ echo role[foo]
[]
是shell globbing语法(字符类)的一部分。如果您不想要使用globbing,请引用您的变量。如果您不想要分词,也一样。基本上,总是引用您的变量,除非您有理由不这样做。
所以:
echo "$default"