Achei coisas estranhas em Ruby e Zsh – essas duas ferramentas não funcionam bem juntas. Eu uso:
- ruby 1.9.3p392
- zsh 4.3.11
E script simples
$ cat argv.rb
p ARGV # print on screen passed arguments
Exemplo com argumentos passados pela linha de comando:
$ ruby argv.rb --tag key:value
["--tag", "key:value"]
# --> it's okay, array should include 2 elements
Exemplo com argumentos passados pela variável:
$ export PARAMS="--tag key:value"
$ ruby argv.rb $PARAMS
["--tag key:value"]
# --> one element - something went wrong
Mude o shell para bash e execute-o novamente:
$ bash
bash-3.2$ ruby argv.rb --tag key:value
["--tag", "key:value"]
# --> two elements
bash-3.2$ export PARAMS="--tag key:value"
bash-3.2$ ruby argv.rb $PARAMS
["--tag", "key:value"]
# --> two elements
Para o bash está tudo bem, de alguma forma o zsh passa / gera variáveis de maneira diferente. Se alguém souber como fazer funcionar com o zsh, deixe um comentário.
De qualquer forma, tenha cuidado ao usar variáveis zsh, ruby e constante ARGV.