скрипт bash не работает с несколькими аргументами - PullRequest
1 голос
/ 06 ноября 2011

Я пытаюсь создать псевдоним для git commit

function gcam() {
  git commit -a -m $@ ;
  git status
}

когда я вызываю команду с gcam 'something', она работает правильно, но если в середине сообщения есть пробел, например gcam 'new commit', появляется сообщение Paths with -a does not make sense

Я искал это решение , но у меня оно не работает, потому что я использую $@, а не $1. Почему $@? Просто если мне нужно передать дополнительный аргумент для git commit.

Есть идеи, чтобы это сработало?

Заранее спасибо

1 Ответ

3 голосов
/ 06 ноября 2011

@ Мэт наполовину прав: вы должны заключить в кавычки $@, а затем также и в сообщении."$@" расширяется до списка аргументов, каждый в отдельном слове (то есть, как будто каждый аргумент был заключен в индивидуальную кавычку):

function gcam() {
  git commit -a -m "$@"
  git status
}

gcam "commit message" -v

Это соответствует:

git commit -a -m "commit message" -v
git status
...