2012-03-01 08:25:33 +0000 2012-03-01 08:25:33 +0000
84
84

как мне повторить эхо $something >> file.txt без возврата каретки?

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

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

Ответы (4)

98
98
98
2012-03-01 08:28:15 +0000

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

42
42
42
2012-03-01 14:42:29 +0000

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

printf "%s" "$something" >> file.txt
```.
7
7
7
2016-12-14 07:52:48 +0000

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

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
0
0
0
2017-05-11 11:41:20 +0000

tr - еще одна альтернатива.

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

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

Приведены некоторые тесты, показывающие, что это работает.

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

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

UNIX newline:

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.