回显而不换行

回显而不换行

-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 的错误吗?
echo -n会破坏一切,所以不行。

答案1

您可以使用 while 循环

while read i 
do
    echo $i
done < output

您的命令无法按预期工作的原因在于for对单词进行操作。 $IFS 变量的值决定使用哪些字符来分隔单词,默认值为spacetabnewline。由于您的输入文件包含带空格的行,因此它们会被拆分成单词。如果您需要使用 for 循环,您可以通过将行换行来解决此问题"

for i in "`cat output`"
do
    echo "$i"
done

答案2

while read line; do echo $line; done < output

相关内容