Shell
執行儲存在 shell 變數中的命令
以下適用於我的外殼(zsh):
> FOO='ls' > $FOO file1 file2
但以下沒有:
> FOO='emacs -nw' > $FOO zsh: command not found: emacs -nw
即使
emacs -nw
直接呼叫也能很好地打開 Emacs。為什麼?
因為沒有命令叫做
emacs -nw
. 有一個命令被呼叫emacs
,你可以傳遞一個-nw
選項。要儲存命令,您通常使用函式:
foo() emacs -nw "$@" foo ...
要儲存多個參數,通常使用數組:
foo=(emacs -nw) $foo ...
要儲存包含由空格分隔的多個單詞的字元串並將其拆分為空格,您可以執行以下操作:
foo='emacs -nw' ${(s: :)foo} ...
您可以依賴在 IFS 上執行的分詞(IFS 預設包含空格、製表符、換行符和 nul):
foo='emacs -nw' $=foo ...