为什么没有正确设置此shell变量

时间:2016-01-26 14:41:35

标签: linux bash

我的linux机器上有一个特定用户,有以下命令

json='[{"date":"2016"}]' && echo ${json}

输出1而不是[{"date":"2016"}]

我机器上的所有其他用户都能正常工作。当我将命令更改为(省略1)

json='[{"date":"206"}]' && echo ${json}

它也是正确的。

我正在拼命寻找导致此效果的此用户的配置差异。但说实话,我不知道。

有任何提示吗?

1 个答案:

答案 0 :(得分:8)

方括号创建一个匹配其中任何单个字符的glob表达式。

[123]匹配名为123的文件;同样,[{"date":"2016"}]匹配名为date:2,{{1}的文件},016"{

对于那些没有任何文件命名的用户,您没有注意到它,因为没有匹配的glob表达式的默认行为不会对其自身进行求值(尽管可以使用{{修改此默认值) 1}},在这种情况下,没有匹配的glob评估为空。)

引用你的扩展 - } - 以避免这种情况。

重现:

shopt -s nullglob
相关问题