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

我在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命令本身的方式。

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

回答:

您的变量。原因如下:

$ f="fafafda

> adffd

> adfadf

> adfafd

> afd"

$ echo $f

fafafda adffd adfadf adfafd afd

$ echo "$f"

fafafda

adffd

adfadf

adfafd

afd

不带引号的外壳将替换$TEMP为其包含的字符(其中之一是换行符)。然后,在调用echoshell 之前,先使用Internal Field

Separator(IFS)将该字符串拆分为多个参数,然后将所得的参数列表传递给echo。默认情况下,IFS设置为空白(空格,制表符和换行符),因此Shell将您的$TEMP字符串切成参数,并且永远也看不到换行符,因为Shell会将其视为分隔符,就像空格一样。

以上是 将命令输出存储到bash中的变量时,如何保留换行符? 的全部内容, 来源链接: utcz.com/qa/413792.html

回到顶部