73

Когда я echo $something >> file.txt , к файлу будет добавлена новая строка.

Что делать, если я хочу добавить без новой строки?

4 ответа4

87

Вот для чего echo -n .

36

printf очень гибкий и более портативный, чем echo . Как и в реализациях C/Perl/etc, если вы не завершаете строку формата с помощью \n символ новой строки не печатается:

printf "%s" "$something" >> file.txt
7

Если вы используете вывод команды, вы можете использовать xargs в сочетании с echo

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
0

tr - другая альтернатива.

Если вы используете echo качестве входных данных, вы можете узнать, какой tr -d '\n' .

Этот метод также работает при передаче результатов от других команд (только с одной строкой вывода). Более того, если вы не знаете, имеют ли файлы окончания строки UNIX или DOS, вы можете использовать tr -d '\n\r' .

Вот несколько тестов, показывающих, что это работает.

Новая строка включена:

something='0123456789' ; echo ${something} | wc -c
11

UNIX новая строка:

something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10

Стиль DOS:

something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10

Протестировано с BSD tr и GNU tr .

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