我正在尝试将init脚本的输出捕获到变量中,但在这种情况下,它并不是非常简单,因为init脚本使用的是log_daemon_msg和log_failure_msg。为什么输出成功通过此管道:
service tomcat7 start | grep Tomcat
但不是这个?
service tomcat7 start | read OUTPUT; echo $OUTPUT
在第二个示例中,$ OUTPUT的值是所有init脚本的列表,这不是我所期望的。同样,以下示例还会生成/etc/init.d中所有内容的列表:
OUTPUT=$(service tomcat7 start)
答案 0 :(得分:1)
在第二个示例中,read
在子shell中设置OUTPUT
的值。当管道结束时,子shell退出,OUTPUT
的值丢失。使用第三个例子。
答案 1 :(得分:0)
service tomcat7 start |
while read OUTPUT
do
echo $OUTPUT
done
这是有效的,因为命令的输出中只有一行而不是一行。你需要多次读取。因为命令发出了多行。
答案 2 :(得分:0)
如果$ OUTPUT包含扩展的特殊字符(用于文件名扩展),它可能已经工作,似乎没有。试试echo "$OUTPUT"
。