Відповіді:
Ось для чого 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
.