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

330
sasquires

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

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

x=foo* y=$~x 

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

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

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

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

3
Лучше попробуйте [Unix & Linux] (https://unix.stackexchange.com/) на случай, если здесь тоже не будет много ответов. Tomasz 6 лет назад 0

1 ответ на вопрос

2
mpy

Если вы создаете yмассив, параметр $xget расширяется:

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

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

$ ys=${(j: :)y} $ print -l $ys foo1 foo2 
Это определенно лучшая идея, которую я когда-либо слышал. Я надеялся получить ответ на более широкий вопрос, чем мой первоначальный вопрос: «Как мы можем сделать это расширение без какой-либо дополнительной работы?» Но это определенно удовлетворяет первоначальному вопросу, не порождая подоболочки. Спасибо! sasquires 6 лет назад 0

Похожие вопросы