Bash
ZSH,將傳入的參數連接成一個字元串
為了方便起見,我想創建一個簡單的 bash 函式。按照給出的答案:Joining bash arguments into single string with spaces我已經能夠將這段程式碼混搭起來:
function gcm { msg="'$*'" eval "git commit -m ${msg}" }
現在,這個例子對於像“你好,是我”(簡單的單詞字元集)這樣的送出消息非常方便,但是當我不想要這樣的送出消息時:
$$ WIP $$中途程式碼。”,我收到如下錯誤消息:
zsh: no matches found: [WIP]
您能否為我澄清一下背景中發生的事情以及此程式碼段失敗的原因?
ZSH 令人愉快地擺脫了在其他 shell 中看到的分詞行為(除非出於某些奇怪的原因,該
SH_WORD_SPLIT
選項已打開),因此無需使用奇怪的雙引號結構。% (){ print -l $* } a b c a b c % (){ print -l "$*" } a b c a b c % (){ local msg; msg="$*"; print -l $msg } a b c a b c %
因此,以下內容就足夠了:
function gcm { local msg msg="$*" git commit -m $msg }
可以通過引用
[WIP]
as之類的字元串'[WIP]'
或通過noglob
別名來禁用萬用字元:% function blah { print -l "$*" } % alias blah='noglob blah' % blah [de] *blah* [de] *blah* %