将命令输出存储到bash中的variables时,如何保留换行符?

我在Linux上使用bash shell。 我有这个简单的脚本…

#!/bin/bash TEMP=`sed -n '/'"Starting deployment of"'/,/'"Failed to start context"'/p' "/usr/java/jboss/standalone/log/server.log" | tac | awk '/'"Starting deployment of"'/ {print;exit} 1' | tac` echo $TEMP 

但是,当我运行这个脚本

 ./temp.sh 

所有的输出打印没有回车/新行。 不知道是否将输出存储到$ TEMP或echo命令本身。

如何将命令的输出存储到variables并保留换行符/回车符?

Solutions Collecting From Web of "将命令输出存储到bash中的variables时,如何保留换行符?"

引用你的变量。 这是为什么:

 $ f="fafafda > adffd > adfadf > adfafd > afd" 

 $ echo $f fafafda adffd adfadf adfafd afd 

 $ echo "$f" fafafda adffd adfadf adfafd afd 

如果没有引号,shell将用它所包含的字符(其中一个是换行符)替换$TEMP 。 然后,在调用echo shell之前,使用Internal Field Separator (IFS)将该字符串拆分为多个参数,并将结果列表的参数传递给echo 。 默认情况下, IFS被设置为空格(空格,制表符和换行符),因此shell会将$TEMP字符串转换为参数,并且永远不会看到换行符,因为shell将其视为分隔符,就像空格一样。