Когда я echo $something >> file.txt
, новая строка будет добавлена в файл.
Что делать, если я хочу добавить без новой строки?
bash
redirection
onemach
источник
источник
echo $something
, его поведение зависит отIFS
переменной, и вы можете получить исчезающий символ. Вы можете попробовать следующее:var="hello world"; echo $var
(два пробела между приветом и миром) илиvar="hello world"; IFS='l'; echo $var
илиvar="-e hello \\n world"; echo $var
. Чтобы решить эту проблему, поместите двойные кавычки вокруг переменной следующим образом:echo "$var"
или используйтеprintf
.Ответы:
Вот для чего
echo -n
.источник
cat
? (например, когда у вас есть файл,something.txt
а не переменная$something
)printf
очень гибкий и более портативный, чемecho
. Как и в реализациях C / Perl / etc, если вы не завершаете строку форматирования,\n
то новая строка не печатается:источник
Если вы используете вывод команды, вы можете использовать xargs в сочетании с echo
источник
tr
другая альтернатива.Если вы используете в
echo
качестве входных данных, вы можете избежать чегоtr -d '\n'
.Этот метод также работает при передаче результатов от других команд (только с одной строкой вывода). Более того, если вы не знаете, имеют ли файлы конец строки UNIX или DOS, вы можете использовать их
tr -d '\n\r'
.Вот несколько тестов, показывающих, что это работает.
Новая строка включена:
UNIX newline:
Стиль DOS:
Протестировано с BSD
tr
и GNUtr
.источник