0

この例でブランチが「マスター」ではなく「m」に設定されているのはなぜですか?

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

これは、私がいるどのディレクトリからでも発生しますが、Linux ボックスではなく、Mac でのみ発生します。

4

3 に答える 3

2

ファイル名展開のようですが、現在のディレクトリに というファイルがありますmか?

于 2012-04-17T13:31:40.760 に答える
1

ある種のエスケープの問題かもしれません。[ と ] をエスケープしようとしましたか?

編集:システムで動作を再現できますが、次の名前のファイルがm存在する場合のみ:

[sf@zeus:~] touch m
[sf@zeus:~] branch="[master]"
[sf@zeus:~] echo $branch
m
于 2012-04-17T13:33:24.073 に答える
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]
于 2012-04-17T13:34:52.800 に答える