4

シェルスクリプト内に特定のブランチが存在するかどうかを確認しようとしています。

ただし、git-branch補間すると出力が変更されるようです。(ここでは正確な現象や用語はわかりません)

たとえば、ブランチの配列を取得しようとしています。

$ git branch
  develop
* master

$ branches=`git branch`
$ echo $branches
develop compiler.sh HOSTNAME index.html master

$ echo `git branch`
develop compiler.sh HOSTNAME index.html master

ある種がls-files邪魔をしているようです。どうして?これはBashですか?ギット?よくわかりません。

4

2 に答える 2

6

の出力には、現在のブランチを示す文字がgit branch含まれています。*

$ git branch
develop
*  master

シェルで実行echo *すると、作業ディレクトリのグロブが出力されます。

compiler.sh HOSTNAME index.html

したがって、拡張後、実際に実行しているため、元の問題が発生しますecho develop * master

このディレクトリをグロブする動作を回避するには、次のように強く引用branchesechoます。

$ branches=`git branch`
$ echo "$branches"
develop
*  master
于 2012-11-07T23:44:14.790 に答える
3

これを試してみてください:

branches=$(git branch | sed 's/\(\*| \)//g')

文字はのを表すためsed、を使用することをお勧めします。これにより、現在のディレクトリ内のすべてのファイルとディレクトリに展開されます。また、不要な余分なスペースを削除します。*globshell

于 2012-11-07T23:30:06.660 に答える