2013-03-14 51 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"