Кто-нибудь сталкивался с проблемой, когда метод печати в Ruby оставляет% в конце строки, используя zsh?

Я использую 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 и имел ту же проблему. Если я переключил свою оболочку на bash, все заработало как положено.

Любая помощь здесь будет отличной. Заранее спасибо!

1 ответ1

1

С вашим скриптом проблем нет, так как % не является частью вывода скриптов, а помещается туда zsh . zsh печатает % (обычно с обращенными цветами), чтобы указать, что последний вывод не завершился переводом строки.

Причина, по которой он, похоже, прекрасно работает в bash заключается в том, что bash просто не указывает на отсутствующий символ новой строки. Рекомендуется завершить (по крайней мере, последний вывод) новой строкой (\n), так как некоторые оболочки не распознают его и напечатают следующее приглашение в той же строке, что и ваши выходные данные:

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

Команда ruby print не добавляет символ новой строки автоматически:

% 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
%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .