2011-06-28 10 views
6

gitプロジェクトをコミットする前に実行する一連のコマンドがありますので、bashスクリプトに入れました。bash:スクリプト引数を渡す

if [ -z $1 ]; then git commit -a -m "no message"; else; git commit -a -m $1; fi 

メッセージは私がこれを行うと、私は

fatal: Paths with -a does not make sense. 
ことを取得するスクリプト

$ ./dostuff_then_commit "my message" 

に渡されることを期待して:最後に私がコミットしないブロックを持っています$1が定義されていますが、メッセージが正しく渡されないため、

?誰もが問題を見て、解決策を提案できますか?ありがとうございます。

答えて

6

メッセージにスペースが含まれている場合は、複数のパラメータがgit commitに拡張されます。 (他のケースでは引用に注目してください。)それを引用:添加剤の

if [ -z "$1" ]; then 
    git commit -a -m "no message" 
else 
    git commit -a -m "$1" 
fi 

カップル:

  • 私はまた少し違う理由で、[]に1を引用:コミット場合メッセージが空の場合は、パラメータが見つからない場合があります。[。繰り返しますが、これを避けて引用します。 (それを捕まえて実際のコミットメッセージを入力させたいかもしれませんが、それが必要な場合はおそらくasdfzxcvのコミットメッセージがたくさんあります....)

  • このエラーメッセージは、コミットメッセージの最初の単語がコミットメッセージとみなされ、残りがコミットする特定のファイル名として渡されるためです。これは、エラーメッセージの状態が意味するように、gitにすべてをコミットするように伝えると意味がありません(-a)。

+0

感謝を。 – hatmatrix

2

引用符で囲む$1をしよう - そうでない場合Gitはmyがメッセージであるとmessageは何か他のものであると考えています。

if [ -z $1 ]; then git commit -a -m "no message"; else; git commit -a -m "$1"; fi 
1

あなたはそれにスペースを持つことができます"$1"代わりの$1 as $ 1 'を使用する必要があります。で置換my messageとして$1

git commit -a -m $1 

を与える:

git commit -a -m my message 

つつ:

git commit -a -m "$1" 

与える:

git commit -a -m "my message" 
2

私はちょうどあなたがそうのようなオプションを組み合わせることができることを追加したいと思います。そこに余分なビットのため

git commit -am "some message" 
+0

ああ、ありがとう..... – hatmatrix

関連する問題