Shell

執行儲存在 shell 變數中的命令

  • January 3, 2015

以下適用於我的外殼(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 ...

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