Назад | Перейти на главную страницу

эхо без новой строки

-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 все сломает, так что не пойдет.

Вы можете использовать цикл 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