zsh e problema de impressão Ruby

0

Alguém se deparou com um problema em que o método de impressão de Ruby deixa um% no final da linha usando zsh?

Estou usando oh-my-zsh ( link ) com iTerm2.

Aqui está um exemplo da minha saída:

➜  Strings  ruby terminal-input.rb
What is your favorite movie? django
Your favorite movie is django.%

Eu tentei usar meu terminal nativo no OSX 10.9.2 e tive o mesmo problema. Se eu mudei meu shell para o bash, tudo funcionou como esperado.

Qualquer ajuda aqui seria ótima. Obrigado antecipadamente!

    
por alvincrespo 27.04.2014 / 21:45

1 resposta

1

Não há problema com seu script, pois o % não faz parte da saída dos scripts, mas colocado por zsh . zsh imprime % (normalmente com cores invertidas) para indicar que a última saída não terminou com uma nova linha.

O motivo pelo qual parece funcionar muito bem em bash é que o bash simplesmente não indica uma nova linha ausente. É uma boa idéia finalizar (pelo menos a última saída) com uma nova linha ( \n ), pois alguns shells não a reconhecerão e imprimirão o próximo prompt na mesma linha da saída:

<someprompt> ruby -e 'print "foobar"'
foobar<someprompt>

O comando ruby print não anexa automaticamente uma nova linha:

% ruby -e 'print "foobar"'
foobar%
%

Você pode adicioná-lo sozinho de várias maneiras

% ruby -e 'print "foobar\n"'
foobar
% ruby -e 'print "foobar" + "\n"'
foobar
% ruby -e 'print "foobar", "\n"'
foobar
%

Ou você pode usar apenas puts em vez de imprimir

% ruby -e 'puts "foobar"'
foobar
%
    
por 28.04.2014 / 07:24