【问题标题】:Why the assignment of an array string (with brackets) to environment variable is not working [duplicate]为什么将数组字符串(带括号)分配给环境变量不起作用[重复]
【发布时间】:2020-07-22 16:23:32
【问题描述】:

在 bash shell 中执行以下命令:

export sz1='"authorities" : ["uaa.resource"]'

现在,试试echo $sz1

我希望看到以下输出:

"authorities" : ["uaa.resource"]

但是我得到了这个:

"authorities" : c

有趣的是,我有几十个服务器,我可以在其中执行这种类型的变量赋值,并且除了在这个服务器上之外它都可以工作。此服务器具有完全相同的操作系统版本、配置文件、bash 版本等。这种行为的原因可能是什么?

【问题讨论】:

标签: linux bash shell scripting environment


【解决方案1】:

始终引用您的变量。使用

echo "$sz1"

当你不引用变量时,分词和通配符扩展是在变量扩展上完成的。 ["uaa.resource"] 是一个通配符,将匹配以下任何文件名:

"
u
a
.
r
e
s
o
u
c

在那台机器上,您有一个名为 c 的文件,因此通配符匹配并替换为该文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2019-02-25
    • 2021-05-12
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多