0

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

service tomcat7 start | grep Tomcat

但不是这个?

service tomcat7 start | read OUTPUT; echo $OUTPUT

在第二个示例中,$OUTPUT 的值是所有初始化脚本的列表,这不是我所期望的。类似地,下面的示例也会生成 /etc/init.d 中所有内容的列表:

OUTPUT=$(service tomcat7 start)
4

3 回答 3

1

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

于 2013-03-14T12:46:51.463 回答
0
service tomcat7 start | 
while read OUTPUT
do
   echo $OUTPUT
done

这是有效的,因为命令的输出不止一行。您需要多次阅读。因为命令发出了多行。

于 2013-03-14T02:39:28.400 回答
0

如果 $OUTPUT 包含扩展的特殊字符(用于文件名扩展),它可能已经起作用,但似乎不起作用。试试echo "$OUTPUT"

于 2014-06-16T08:35:25.943 回答