У меня проблема с echo в моем script:
echo -n "Some string..."
печатает
-n Some string...
и переходит к следующей строке. В консоли он работает без новой строки:
Some string...
У меня проблема с echo в моем script:
echo -n "Some string..."
печатает
-n Some string...
и переходит к следующей строке. В консоли он работает без новой строки:
Some string...
Существует несколько версий команды echo с разными поведением. По-видимому, оболочка, используемая для вашего script, использует версию, которая не распознает -n.
Команда printf имеет гораздо более последовательное поведение. echo отлично подходит для простых вещей, таких как echo hello, но я предлагаю использовать printf для чего-то более сложного.
В какой системе вы работаете, и какая оболочка использует ваш script?
 bash имеет встроенную команду под названием "echo":
$ type echo
echo is a shell builtin
Кроме того, существует команда "эхо", которая является надлежащим исполняемым файлом (то есть оболочкой forks и execs /bin/echo, в отличие от интерпретации echo и ее выполнения):
$ ls -l /bin/echo
-rwxr-xr-x 1 root root 22856 Jul 21  2011 /bin/echo
Поведение либо echo WRT до \c, и -n меняется. Лучше всего использовать printf, который доступен на четырех разных * NIX-ароматах, на которые я смотрел:
$ printf "a line without trailing linefeed"
$ printf "a line with trailing linefeed\n"
Попробуйте
echo -e "Some string...\c"
Он работает для меня, как и ожидалось (как я понял из вашего вопроса).
Обратите внимание, что я получил эту информацию со страницы man. Страница man также отмечает, что оболочка может иметь свою собственную версию echo, и я не уверен, имеет ли bash свою собственную версию.
Если вы используете echo внутри if с другими командами, например "read", он может игнорировать параметр, и он все равно перейдет к новой строке.
 Просто для самого популярного Linux Ubuntu и его bash:
Проверьте, какую оболочку вы используете? Главным образом ниже работает, еще посмотрите это:
 echo $0
 Если выше печатает bash, то ниже будет работать:
 printf "hello with no new line printed at end" 
 ИЛИ ЖЕ echo -n "hello with no new line printed at end"
Когда вы идете и пишете свой скрипт оболочки, всегда ставьте первую строку как #!/Usr/bin/env bash. Эта оболочка не опускает и не управляет escape-последовательностями. ex echo "Это первая \n строка" печатает Это первая \n строка.