2012-04-17 34 views
0

爲什麼在此示例中分支被設置爲'm'而不是'master'?BASH字符串行爲怪異

$ branch="[master]" 
$ echo $branch 
m 

這發生在我所在的任何目錄中,但只在我的Mac上,而不在我的一個Linux機器上。

+0

我無法重現此問題。請提供有關bash版本,操作系統等的更多信息 – 2012-04-17 13:31:02

回答

2

看起來像file name expansion,你在當前目錄下有一個文件叫做m

+0

是的,我有一個名爲'm'的目錄 – 2012-04-17 13:41:44

+1

@ScottFrazer:與'echo *'或'touch a b c; echo [abcdefghijklmnopqrstuvwxyz]' - 它列出與表達式匹配的文件。如果你想避免擴展,請[使用更多引用](http://www.grymoire.com/Unix/Quote.html)。 – l0b0 2012-04-17 14:16:20

1

事實上,就像開卷說,這與文件名擴展做。

[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]