繁体   English   中英

在变量中捕获初始化脚本输出

[英]capturing init script output in a variable

我试图将初始化脚本的输出捕获到一个变量中,但是在这种情况下,它不是很简单,因为初始化脚本正在使用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)

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

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

之所以可行,是因为命令的输出多于一行。 您需要多次读取。 因为命令发出了多行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM