Эхо без перевода строки

-bash-4.1# cat output
"/root/mail/domain.com/root/Archive Dir.2012.04 April"

for i in `cat output`; do echo "$i"; done
"/root/mail/domain.com/root/Archive
Dir.2012.04
April"

Я хочу, чтобы они были в одной строке, так как они изначально хранятся в файле. Это вина эха?
echo -n сломать все, так что не будет.

2 ответа

Вы можете использовать цикл while

while read i 
do
    echo $i
done < output

Причина, по которой ваша команда не работает так, как вы ожидаете, заключается в том, что for действует на слова. Значение переменной $IFS определяет, какие символы используются для разделения слов, по умолчанию space, tab а также newline, Поскольку ваш входной файл содержит строки с пробелами, они разбиваются на слова. Если вам нужно использовать цикл for, вы можете обойти это, заключив строки в "

for i in "`cat output`"
do
    echo "$i"
done
while read line; do echo $line; done < output
Другие вопросы по тегам