为什么在此示例中,分支被设置为“m”而不是“master”?
$ branch="[master]"
$ echo $branch
m
这发生在我所在的任何目录中,但仅在我的Mac上,而不是在我的一个linux盒子上。
答案 0 :(得分:2)
看起来像file name expansion,你当前目录中有一个名为m
的文件吗?
答案 1 :(得分:1)
也许某种逃避问题,你试图逃避[和]吗?
编辑:我可以在我的系统上重现行为,但仅当存在名为m
的文件时:
[sf@zeus:~] touch m
[sf@zeus:~] branch="[master]"
[sf@zeus:~] echo $branch
m
答案 2 :(得分:1)
事实上,正如unwind所说,这与文件名扩展有关。
[15:33] ~$ branch="[master]"
[15:33] ~$ echo $branch
[master]
[15:33] ~$ touch m
[15:33] ~$ echo $branch
m
[15:33] ~$
当前目录中必须有一个名为m
的文件或目录。
可能的补救措施是使用引用:
$ ls m # `m' exists
m
$ echo "$branch" # yet this echoes "[master]"
[master]