我的linux机器上有一个特定用户,有以下命令
json='[{"date":"2016"}]' && echo ${json}
输出1
而不是[{"date":"2016"}]
。
我机器上的所有其他用户都能正常工作。当我将命令更改为(省略1)
时json='[{"date":"206"}]' && echo ${json}
它也是正确的。
我正在拼命寻找导致此效果的此用户的配置差异。但说实话,我不知道。
有任何提示吗?
答案 0 :(得分:8)
方括号创建一个匹配其中任何单个字符的glob表达式。
[123]
匹配名为1
,2
或3
的文件;同样,[{"date":"2016"}]
匹配名为d
,a
,t
,e
,:
,2
,{{1}的文件},0
,1
,6
,"
或{
。
对于那些没有任何文件命名的用户,您没有注意到它,因为没有匹配的glob表达式的默认行为不会对其自身进行求值(尽管可以使用{{修改此默认值) 1}},在这种情况下,没有匹配的glob评估为空。)
引用你的扩展 - }
- 以避免这种情况。
重现:
shopt -s nullglob