ユーザー生成関数で見積もりを拡張しない

ユーザー生成関数で見積もりを拡張しない

以下の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単語はさらにファイル名のグロービングになります。

関連:

おすすめ記事