Генерация имени файла из переменной в zsh без появления подоболочки

В zsh у меня есть шаблон glob в переменной, и я хочу определить другую переменную, которая выполняет генерацию имени файла для этого шаблона. Есть ли способ сделать это, не создавая подоболочки?

Следующее не работает:

x=foo*
y=$~x

Очевидно, я могу сделать

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

и начинается регулярное поведение завершения. Но суть этого вопроса состоит в том, чтобы избежать порождения подоболочки, которая, как кажется, должна быть ненужной.

Этот вопрос не получил ответов в течение последних нескольких дней на stackoverflow.com, поэтому я решил, что попробую спросить здесь.

1 ответ

Решение

Если вы делаете y массив, параметр $x получить расширенный:

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

Если вы хотите одну строку, объедините значения массива пробелами:

$ ys=${(j: :)y}
$ print -l $ys
foo1 foo2
Другие вопросы по тегам