zsh 和 Ruby 打印问题

zsh 和 Ruby 打印问题

有谁在使用 zsh 时遇到过 Ruby 的打印方法在行尾留下 % 的问题吗?

我正在使用 oh-my-zsh (https://github.com/robbyrussell/oh-my-zsh) 与 iTerm2。

下面是我的输出示例:

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

我尝试在 OSX 10.9.2 上使用我的本机终端,但遇到了同样的问题。如果我将 shell 切换到 bash,一切都会按预期运行。

任何帮助都非常感谢。提前致谢!

答案1

您的脚本没有问题,因为%不是脚本输出的一部分,而是放在那里的zshzsh打印%(通常以反转的颜色)以指示最后的输出没有以换行符结束。

它似乎工作得很好的原因是bash,bash 不会指示缺少换行符。最好以换行符 ( \n) 结束(至少是最后一个输出),因为某些 shell 不会识别它并在输出的同一行中打印下一个提示:

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

rubyprint命令不会自动添加换行符:

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

你可以通过多种方式自行添加

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

或者你可以直接使用puts而不是打印

% ruby -e 'puts "foobar"'
foobar
%

相关内容