2017-12-13 7 views
2

私はGitコミットを持っています。だから私はgit log --format=%B -n 1 <commit>経由でメッセージをコミット見るとき、それは次のようになります。私は、しかし、このように、bashの変数でこれを保存しようとするとGitコミットメッセージが変数に格納されたときに壊れていました

Commit Summary Line * Commit Description Line 1 * Commit Description Line 2 * Commit Description Line 3

message=$(git log --format=%B -n 1 <commit>)

、その後、 echo $messageを試してみると、現在のディレクトリのフォルダ名がコミットメッセージの各行と混ざり合っています。さらに、私はコミットメッセージからすべての行を見ていなくて、ちょうどそれらのいくつか。

Commit Summary Line folder1 folder2 folder3 Commit Description Line 1 folder1 folder2 folder3 Commit Description Line 3

この挙動のいずれかの説明があります:だから、$messageは次のようになりますか?私はちょうど$messageが完全なコミットメッセージからすべての行を持つことを望みます。私は新しい行やすべての行が1行であれば気にしません。すべての行を文字列変数に格納するだけです。これをどのように達成するのですか?

+3

私がいつも言っているように、疑わしい時は...引用してください! –

答えて

2

ここでは*によって引き起こされた不正なビットpathname expansionと思われます。 message変数の前後に引用符を追加してみてください。

echo "$message" 
+1

シェルスクリプトでは、変数を二重引用符で囲まずに変数を使用することはほとんどの場合間違いです。間違った方法がたくさんあります。 –

+0

@GordonDavisson - 賢明な言葉私の友人!私は引用符が私の日を台無しにしているすべての時間を数えることはできません。 –

関連する問題