2017-06-13 108 views
0

我有一个像下面如何在shell脚本输出中保留新行?

output_logs=`sh script2.sh $1 $2` 

script2.sh产生大量日志的线在我的shell脚本一条线。我想要grep其输出的特定行。我的问题是$output_logs的整个输出为script2.sh作为单行字符串,因此grep会产生奇怪的结果。如何从script2.sh获取日志以存储在单独的行中?

+0

您没有向您显示如何知道'$ output_logs'确实或不包含 - 如果您正在运行'echo $ output_logs'并且认为这反映了变量的输出准确无误,那么您的问题(又名[BashPitfalls#14](http://mywiki.wooledge.org/BashPitfalls#echo_.24foo))。 –

+0

我完全一样。我没有回应'$ output_logs'。修复。 –

回答

1

也许你应该尝试这样的事情。

output_logs=`sh script2.sh $1 $2` 
echo "$output_logs" 

请注意,这与echo $output_logs不同。

变量的双引号版本完全保留值的内部间距,正如它在变量中表示的那样 - 换行符,制表符,多个空格和全部 - 而未加引号的版本将替换每个序列的一个或多个空格,制表符和一个空间的换行符。

+0

''$ 1“”$ 2“',如果我们不想在那里进行字符串分割。 (我想知道OP *是否真的想要传递所有参数,即''$ @“'')。 –

相关问题