为什么将数组字符串(带括号)分配给环境变量不起作用
Why the assignment of an array string (with brackets) to environment variable is not working
在bashshell中执行以下命令:
export sz1='"authorities" : ["uaa.resource"]'
现在,试试echo $sz1
我希望看到以下输出:
"authorities" : ["uaa.resource"]
但是我得到的是:
"authorities" : c
有趣的是,我有几十台服务器,我可以在其中执行这种类型的变量赋值,而且它可以在这台服务器上工作。此服务器具有完全相同的 OS 版本、配置文件、bash 版本等。此行为的原因可能是什么?
总是引用你的变量。使用
echo "$sz1"
当你不引用变量时,分词和通配符扩展是在变量扩展上完成的。在 ["uaa.resource"]
上是一个通配符,它将匹配以下任何文件名:
"
u
a
.
r
e
s
o
u
c
在那台机器上,您有一个名为 c
的文件,因此通配符匹配并替换为该文件名。
在bashshell中执行以下命令:
export sz1='"authorities" : ["uaa.resource"]'
现在,试试echo $sz1
我希望看到以下输出:
"authorities" : ["uaa.resource"]
但是我得到的是:
"authorities" : c
有趣的是,我有几十台服务器,我可以在其中执行这种类型的变量赋值,而且它可以在这台服务器上工作。此服务器具有完全相同的 OS 版本、配置文件、bash 版本等。此行为的原因可能是什么?
总是引用你的变量。使用
echo "$sz1"
当你不引用变量时,分词和通配符扩展是在变量扩展上完成的。在 ["uaa.resource"]
上是一个通配符,它将匹配以下任何文件名:
"
u
a
.
r
e
s
o
u
c
在那台机器上,您有一个名为 c
的文件,因此通配符匹配并替换为该文件名。