Por que $ * não está funcionando como esperado?

1

Estou tentando usar $ * em uma função para expandir para todos os argumentos de linha de comando em uma função, mas isso está me dando um comportamento bizarro:

$ function repeat() {
echo "$*"
}

$ repeat puts hello    # this gives me nothing at all
$ repeat "puts hello"  # this asks me for more input
repeat>

Por que isso aconteceria?

    
por iconoclast 25.03.2013 / 19:45

1 resposta

9

Você está em zsh , não bash .

Em zsh , repeat (inspirado em csh repeat ) é uma construção usada para repeat de comandos.

repeat 10 echo foo

Ecoaria 10 vezes.

Se você quiser chamar seu repeat , precisará citar para que não seja considerado como a palavra repeat reservada.

$ echo $ZSH_VERSION
5.0.2
$ 'repeat'() echo "$*"
$ type -a repeat
repeat is a reserved word
repeat is a shell function
$ repeat 2 echo foo
foo
foo
$ "repeat" 2 x
2 x

Melhor seria usar outra coisa para o nome da sua função.

    
por 25.03.2013 / 20:53