试图在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不了解,为什么不能在其中打印带有 role[bas]
的字符串?
$ touch roles
$ echo role[abc]
role[abc]
$ echo role[rst]
roles
$ echo role[foo]
[]
是Shell Globing语法(字符类)的一部分。如果您不希望Globbing发生,请引用您的变量。同样,如果您不想要单词分裂。本质上,始终引用您的变量,除非您有理由不这样做。
so:
echo "$default"