ZSH, конкатенация передается аргументами в одну строку

Я хотел бы создать простую функцию bash для использования для моего удобства. После ответа, приведенного в: Объединяя аргументы bash в одну строку с пробелами, я смог размять этот маленький кусок кода:

function gcm { msg="'$*'" eval "git commit -m ${msg}" } 

Теперь этот пример очень удобен для сообщений о совершении, таких как «Привет, это я» (простой набор символов слова), но когда я не буду писать сообщение, например: «[WIP] Halfway crough code.», Я получаю сообщение об ошибке следующим образом: zsh: no matches found: [WIP]

Не могли бы вы пояснить для меня, что происходит на заднем плане и почему этот фрагмент не удается?

One Solution collect form web for “ZSH, конкатенация передается аргументами в одну строку”

ZSH восхитительно свободен от поведения расщепления слов, наблюдаемого в других оболочках (если только по какой-то причудливой причине не SH_WORD_SPLIT параметр SH_WORD_SPLIT ), поэтому нет необходимости использовать странные конструкции с двойным кавычками.

 % (){ print -l $* } abca b c % (){ print -l "$*" } abc abc % (){ local msg; msg="$*"; print -l $msg } abc abc % 

Таким образом, должно быть достаточно:

 function gcm { local msg msg="$*" git commit -m $msg } 

Глобус может быть отключен путем цитирования строк, таких как [WIP] как '[WIP]' , или, возможно, с помощью псевдонима noglob :

 % function blah { print -l "$*" } % alias blah='noglob blah' % blah [de] *blah* [de] *blah* % 
  • Shell glob - заменить файл path arg с содержимым файла
  • Элегантный способ предотвратить замену команд от удаления конечной строки новой строки
  • Как настроить zsh для запуска меню - для параметров команды?
  • ZSH и завершение файлов с символами новой строки
  • Как выполнить повторную команду k'th в конвейере?
  • История-поиск в zsh работает только для команд?
  • Преобразование истории в скрипт?
  • Как фиксировать статус выхода команды без конечного результата в конвейере?
  • Показывать материал под подсказкой в ​​командной строке?
  • Исходный контроль и символическая ссылка для .zhistory
  • Как запустить указанный код с помощью getopts, когда параметры или аргументы не заданы?
  • Interesting Posts

    Требуется sed для удаления знаков препинания

    Удалите повторяющиеся строки, сохраняя порядок строк

    Как избежать повторения одной и той же команды в сценарии bash

    case multi-pattern со строками

    Как создать пользовательский регион в gnome3?

    создание vim fold также скрывает новую строку после функции

    Чтобы добавить номера строк в каждой строке с помощью команды оболочки?

    Как переименовать неназванные файлы с соответствующими расширениями?

    Разделитель комментариев с открытым ключом SSH

    разделение текстовых файлов в соответствии с регулярным выражением

    Вызов bash из sh (тире) с командами, считанными из args, и «Unterminated quoteed string» / «неожиданный EOF»

    Почему рекомендуется создавать группу и пользователя для некоторых приложений?

    Объединение файлов в них также добавляет новую строку между каждым файлом

    не может получить соотношение 16: 9 на kvm, только 16:10 или 4: 3

    Photoshop в Wine не открывается, появляется ошибка «Файл не найден»

    Linux и Unix - лучшая ОС в мире.