I would like to create a simple bash function to use for my convenience. Following the answer given at: Joining bash arguments into single string with spaces I've been able to mash up this small piece of code:function gcm {  msg='$*'  eval git commit -m ${msg}}Now, this example is very convenient for commit messages like Hello, it's me (simple set of word characters that is), but when I wan't a commit message like: [WIP] Halfway trough code., I get an error message as follows: zsh: no matches found: [WIP]Would you please clarify for me what is happening in the background and why this snippet fails?
ZSH, concatenate passed in arguments into a single string
bash;zsh;string;arguments;join
ZSH is delightfully free of the word-splitting behaviour seen in other shells (unless for some bizarre reason the SH_WORD_SPLIT option has been turned on), so there is no need to use strange double-quoting constructs.% (){ print -l $* } a b c  abc% (){ print -l $* } a b ca b c% (){ local msg; msg=$*; print -l $msg } a b ca b c% Thus, the following should suffice:function gcm {  local msg  msg=$*  git commit -m $msg}Globbing may be disabled by quoting strings like [WIP] as '[WIP]', or perhaps via a noglob alias:% function blah { print -l $* }% alias blah='noglob blah'% blah [de] *blah*[de] *blah*% 