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
%