以下のbash機能があります。
tg() {
git add -A && git commit -m $1 && git push
}
しかし、うまくいかないようです。
$ tg "create index for users"
error: pathspec 'index' did not match any file(s) known to git.
error: pathspec 'for' did not match any file(s) known to git.
error: pathspec 'users' did not match any file(s) known to git.
明らかに問題は、引用符が拡張され、中間コマンドがgit commit -m create index for users
次のように読み込まれることです。git commit -m "create index for users"
私は何が間違っていましたか?この問題をどのように解決できますか?
ベストアンサー1
二重引用符の拡張$1
:
tg() {
git add -A &&
git commit -m "$1" &&
git push
}
引用符なしで置くと、$1
シェルはその値(の内容)をスペースに分割し、結果の$IFS
単語はさらにファイル名のグロービングになります。
関連: