Bash

ZSH,將傳入的參數連接成一個字元串

  • April 6, 2016

為了方便起見,我想創建一個簡單的 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*
% 

引用自:https://unix.stackexchange.com/questions/274257