Expanda a variável na definição de função em zsh

2

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.

    
por beta 15.02.2014 / 12:40

1 resposta

3

Normalmente, é um caso em que você precisa de eval .

$ for f (foo) eval "\$f() echo ${(qq)f}"
$ which foo
foo () {
    echo 'foo'
}
    
por 15.02.2014 / 13:15

Tags