как мне повторить эхо $something >> file.txt без возврата каретки?
Когда я echo $something >> file.txt
, к файлу будет добавлена новая строка.
Что, если я хочу добавить без новой строки?
Когда я echo $something >> file.txt
, к файлу будет добавлена новая строка.
Что, если я хочу добавить без новой строки?
Вот для чего нужен echo -n
.
printf
очень гибкий и более портативный, чем echo
. Как и в реализации C/Perl/etc, если вы не завершаете строку форматирования \n
, то новая строка не печатается:
printf "%s" "$something" >> file.txt
```.
Если вы используете вывод команды, вы можете использовать xargs в сочетании с echo
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
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
.