Відповіді:
Ось для чого echo -n.
cat? (наприклад, коли у вас є файл, something.txtа не змінна $something)
printfдуже гнучка і портативна, ніж echo. Як і у виконанні C / Perl / etc, якщо ви не скасуєте рядок формату, \nтоді не буде надруковано новий рядок:
printf "%s" "$something" >> file.txt
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.
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.