Я пишу сценарий 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"