Назад | Перейти на главную страницу

Bash Script Echo -n

Я пишу сценарий bash и хочу отобразить строку, но без автоматического добавления новой строки в конец. Читая страницу руководства, он говорит, что флаг -n.

Проблема в том, что когда я:

echo -n "My string is here"

Результатом сценария bash является:

-n My string is here

Любая идея, почему -n флаг выводится вместо обработки.

Проверьте оболочку, с которой вы используете:

echo $0

Если это /bin/sh, измените на /bin/bash с участием chsh и попробуй еще раз.

http://hints.macworld.com/article.php?story=20071106192548833

Работает на CentOS, но, похоже, OSX не любит флаг -n.

echo странно несовместимы между версиями - разные версии / bin / echo, а также встроенные версии в разных оболочках (даже разные версии одной и той же оболочки). Некоторые версии понимают параметры (например, -n), некоторые версии понимают escape-последовательности внутри строки (заканчиваются на "\c" чтобы пропустить новую строку). В некоторых версиях используется странное сочетание этих двух.

Если вы хотите последовательного поведения, избегайте echo и использовать printf вместо. Это немного сложнее, но гораздо более предсказуемо:

printf "%s" "My string is here"