Normalmente, é um caso em que você precisa de eval
.
$ for f (foo) eval "\$f() echo ${(qq)f}"
$ which foo
foo () {
echo 'foo'
}
Eu quero gerar um conjunto de funções no meu shell em um loop for
, mas não consigo ver como acessar uma variável dentro do corpo da função que estou criando.
Em essência, eu gostaria do seguinte
for f in foo ; do $f() { echo $f } ; done
para gerar uma função foo() { echo foo }
, mas em vez disso eu obtenho foo() { echo $f }
.
Eu li a seção sobre flags de expansão de parâmetro no manual do zsh, mas o que quer que eu escreva depois de $f()
parece ser colocado literalmente no corpo da função gerada, então eu não tive sorte.
Talvez este seja o caminho errado para fazer isso? Se não, eu quero saber como posso expandir $f
dentro da função quando ela é gerada.