この例でブランチが「マスター」ではなく「m」に設定されているのはなぜですか?
$ branch="[master]"
$ echo $branch
m
これは、私がいるどのディレクトリからでも発生しますが、Linux ボックスではなく、Mac でのみ発生します。
ファイル名展開のようですが、現在のディレクトリに というファイルがありますm
か?
ある種のエスケープの問題かもしれません。[ と ] をエスケープしようとしましたか?
編集:システムで動作を再現できますが、次の名前のファイルがm
存在する場合のみ:
[sf@zeus:~] touch m
[sf@zeus:~] branch="[master]"
[sf@zeus:~] echo $branch
m
実際、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]