2013-03-14 50 views
0

我试图捕获一个初始化脚本输出到一个变量,但在这种情况下,它不是非常简单,因为init脚本使用log_daemon_msg和log_failure_msg。为什么输出成功通过此管道:捕获变量中的初始化脚本输出

service tomcat7 start | grep Tomcat 

但不是这个吗?

service tomcat7 start | read OUTPUT; echo $OUTPUT 

在第二个例子中,$输出值是所有的init脚本的列表,这是不是我的预期。同样,下面的例子也导致一切的名单在/etc/init.d:

OUTPUT=$(service tomcat7 start) 

回答

0
service tomcat7 start | 
while read OUTPUT 
do 
    echo $OUTPUT 
done 

这工作,因为有更多的线路不是只有一个 - 从命令的输出。你需要多次读取。因为从命令发出了多行。

+0

这与'service tomcat7 start'完全相同,并没有解决如何将输出存储在变量中的问题。 – chepner 2013-03-14 12:48:09

1

在第二个示例中,read在子外壳中设置值OUTPUT。当管道结束时,子shell将退出,并且值OUTPUT丢失。使用第三个例子。

0

如果$ OUTPUT包含扩展后的特殊字符(用于文件名扩展),它可能已经可以工作并且看起来似乎没有。尝试echo "$OUTPUT"