web-dev-qa-db-ja.com

サブシェルを生成せずにzshの変数からファイル名を生成

Zshでは、変数にglobパターンがあり、そのパターンでファイル名の生成を実行する別の変数を定義したいと思います。サブシェルを生成せずにこれを行う方法はありますか?

以下は機能しません。

x=foo*
y=$~x

明らかに私はできる

x=foo*
y=$(echo $~x)

そして、通常の完了動作が始まります。しかし、この質問のポイントは、サブシェルの生成を回避することです。これは不要のようです。

この質問はstackoverflow.comで過去数日間応答がなかったので、ここで質問してみようと思いました。

3
sasquires

yを配列にすると、パラメータ$x getの拡張:

$ x=foo*
$ y=($~x)
$ print -l $y
foo1
foo2

単一の文字列が必要な場合は、配列の値を空白で結合します。

$ ys=${(j: :)y}
$ print -l $ys
foo1 foo2
2
mpy