Эхо в псевдонимах gitconfig, повторяющих весь список аргументов командной строки, когда ожидается только один

Долгое время в моем файле псевдонимов были следующие псевдонимы:

ignore=!([ ! -e .gitignore ] && touch .gitignore) | echo $1 >>.gitignore

Это не было оригинально для меня, и если вы будете искать его, вы увидите много мест. Однако недавно у меня возникла странная проблема с псевдонимом. Все, что я игнорирую, помещается дважды в файл .gitignore и в одну строку (только с пробелом).

Я сделал немного отладки и обнаружил, что на самом деле происходит то, что вызовecho $1 эхом$1 как и следовало ожидать, но также повторяет всю строку аргументов для псевдонима.

Чтобы проверить это, я создал новый псевдоним:

eo = !echo $1

> git eo test
test test    

> git eo test0 test1
test0 test0 test1

Эта последняя строка наиболее интересна, потому что она ясно показывает, что вызов echo получает весь набор аргументов, пока$1 оценивается правильно. На самом деле, если я возиться с вещами и изменить$1 в$9 (и не заполняйте$9), Я получил:

> git eo test0 test1
test0 test1

Я подтвердил, что это происходит в версиях Git с 1.8.5 до 1.9.0, и я подтвердил, что этого не происходит в версии Git 1.7.1; к сожалению, я не могу проверить между 1.7.1 и 1.8.5.

У кого-нибудь есть понимание того, что здесь происходит? Это ломает несколько моих псевдонимов ...

Ответы на вопрос(1)

Ваш ответ на вопрос