1

私は次のコードを持っています:

commit_hashes_raw=(`git cherry origin/Server_Dev`)
echo ${#commit_hashes_raw[@]}
echo ${commit_hashes_raw[@]}

これにより、次の出力が生成されます。

2
+ 6f0de9d07538db5d6428acd083c4a4527751596b

最初の行は配列のサイズであり、2番目の行は内容です。ただし、ここでの明らかな問題は、2つの値の不一致です。これを別のデータセットで実行したところ、50要素の配列が中央の行で100要素の長さとして報告されていました。

サイズを見つけるために間違った方法を使用していますか、それとも配列にファンキーなものがありますか?

4

2 に答える 2

3

配列には+、ハッシュとハッシュの2つの要素があります。コマンド出力から配列を設定する場合、要素は改行で区切られるのではなく、空白で区切られます。

あなたはこれを行うことができます:

commit_hashes_raw=($(git cherry origin/Server_Dev | awk '{print $NF}'))

または、シェルを呼び出さないと効率がやや低下します。

commit_hashes_raw=()
while read plus hash; do 
  commit_hashes_raw+=("$hash")
done < <(git cherry origin/Server_Dev)
于 2012-11-19T14:09:17.560 に答える
1

+シンボルが配列に要素を追加しているように見えます。配列を作成するときに、それらを除外してみることができます。何かのようなもの:

commit_hashes_raw=(`git cherry origin/Server_Dev | cut -d' ' -f2`)
于 2012-11-19T14:10:54.373 に答える