シェル変数に格納されたコマンドの実行

シェル変数に格納されたコマンドの実行

以下は私のシェル(zsh)で動作します。

> FOO='ls'
> $FOO
file1 file2

次の場合はそうではありません。

> FOO='emacs -nw'
> $FOO
zsh: command not found: emacs -nw

直接呼び出しても、emacs -nwEmacsはうまく開きます。

なぜ?

ベストアンサー1

というコマンドがないからですemacs -nw。オプションemacsを渡すことができる呼び出されたコマンドがあります-nw

コマンドを保存するには、以下を使用するのが一般的です。機能:

foo() emacs -nw "$@"
foo ...

複数のパラメータを保存するには、通常配列が使用されます。

foo=(emacs -nw)
$foo ...

スペースで区切られた複数の単語を含む文字列を保存してスペースに分割するには、次のようにします。

foo='emacs -nw'
${(s: :)foo} ...

IFSで実行されるトークン化を使用できます(IFSにはデフォルトでスペース、タブ、改行、およびnulが含まれています)。

foo='emacs -nw'
$=foo ...

おすすめ記事