Развернуть переменную в определении функции в zsh

Я хочу сгенерировать набор функций в моей оболочке в цикле for , но я не вижу, как получить доступ к переменной внутри тела функции создаваемой функции.

В сущности, я хотел бы

 for f in foo ; do $f() { echo $f } ; done 

для генерации функции foo() { echo foo } , но вместо этого я получаю foo() { echo $f } .

Я прочитал раздел о флажках расширения параметров в руководстве zsh, но все, что я пишу после $f() кажется, передается дословно в тело сгенерированной функции, поэтому мне не повезло.

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

One Solution collect form web for “Развернуть переменную в определении функции в zsh”

Это типично случай, когда вам нужен eval .

 $ for f (foo) eval "\$f() echo ${(qq)f}" $ which foo foo () { echo 'foo' } 
  • Как подготовить файлы для rsync для файловой системы, не учитывающей регистр?
  • Как получить доступ к fpath пользователя, в отличие от fpath системы со сценарием?
  • Тестирование LS_COLORS в zsh
  • Недопустимое присвоение zsh в функции канала
  • Автозаполнение zsh без запроса
  • Убивание подпроцессов после завершения или уничтожения скрипта
  • Как узнать, почему и где установлена ​​переменная env $ PATH?
  • Проверьте, запущен ли zshrc / sourced
  • ZSH, конкатенация передается аргументами в одну строку
  • Здание zsh без администратора: нет библиотеки обработки терминала
  • Почему `zip` в цикле for работает, когда файл существует, но не тогда, когда он этого не делает?
  • Interesting Posts

    Как восстановить данные, потерянные во время прерывания локального перетаскивания?

    В чем разница между sh и ./ при вызове сценария оболочки?

    архивировать каталог и его содержимое в zip-архив

    Проблема сценария службы Yocto systemd

    Загрузка выходного текста без файлов записи

    Событие SparesMissing было обнаружено на устройстве md / dev / md0

    Как связать файл журнала и сохранить его, когда последний из них изменит дату?

    Есть ли команда «все-в-одном» для RPM, чтобы понизить пакет до более старой версии?

    Странное поведение libev / epoll

    Команда Bash для отображения всех файлов на основе содержимого

    Отобразить имя хоста в GDM3 на Fedora 19 на экране входа в систему

    Как связать окна в Debian Gnome?

    Trouble update-rc.d remove'ing dnsmasq на Debian Stretch

    lpr: Как указать диапазон страниц «3 до конца»?

    Надежность ZFS / ext4 на ZVOL, используемая не для производительности, а для прозрачного сжатия, в системе с низкой памятью?

    Linux и Unix - лучшая ОС в мире.