動機:commitdeploy
非常に生のシェル入力を受け入れたいコマンドを作成しています:
bash$ ./commitdeploy this is my commit message
だから私は次のようなスクリプトを持っています:
#!/bin/bash
...
git commit -a -m"$@" && ./deploy
生成するもの:
fatal: Paths with -a does not make sense.
私が知っていることは次のとおりです。
$@
引数リストです。
"$@"
使用時に単一の引数として表示される文字列に変換された引数リストです
私の質問は、bash が正確に何に送信しようとしているのgit
かということです。git
が単一の引数として受信されていない場合"$@"
、上記の私の特徴付け"$@"
は正しくないと思います。もっと引用符を付ける必要があるようです!
では、次のうちどれが正しい方法で、その理由は何ですか?
オプション 1:git commit -a -m"\"$@\""
オプション 2:git commit -a -m\""$@"\"