【问题标题】:capturing init script output in a variable在变量中捕获初始化脚本输出
【发布时间】:2013-03-02 04:54:23
【问题描述】:

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

【问题讨论】:

    标签: bash stdout init.d


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:
        service tomcat7 start | 
        while read OUTPUT
        do
           echo $OUTPUT
        done
        

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

        【讨论】:

        • 这与service tomcat7 start 相同,并没有解决如何将输出存储在变量中的问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多