爲什麼在此示例中分支被設置爲'm'而不是'master'?BASH字符串行爲怪異
$ branch="[master]"
$ echo $branch
m
這發生在我所在的任何目錄中,但只在我的Mac上,而不在我的一個Linux機器上。
爲什麼在此示例中分支被設置爲'm'而不是'master'?BASH字符串行爲怪異
$ branch="[master]"
$ echo $branch
m
這發生在我所在的任何目錄中,但只在我的Mac上,而不在我的一個Linux機器上。
看起來像file name expansion,你在當前目錄下有一個文件叫做m
?
是的,我有一個名爲'm'的目錄 – 2012-04-17 13:41:44
@ScottFrazer:與'echo *'或'touch a b c; echo [abcdefghijklmnopqrstuvwxyz]' - 它列出與表達式匹配的文件。如果你想避免擴展,請[使用更多引用](http://www.grymoire.com/Unix/Quote.html)。 – l0b0 2012-04-17 14:16:20
也許某種逃避的問題,你試圖逃脫[和]?
編輯:我可以重現我的系統上的行爲,但只有一個名爲m
文件存在:
[[email protected]:~] touch m
[[email protected]:~] branch="[master]"
[[email protected]:~] echo $branch
m
事實上,就像開卷說,這與文件名擴展做。
[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]
我無法重現此問題。請提供有關bash版本,操作系統等的更多信息 – 2012-04-17 13:31:02