2011-05-02 97 views
8

我在Ubuntu 11.4的終端上運行這個。Bash讀取輸出?

說我執行bash腳本,輸出是:

Test1: Some text... 
Test2: Some text... 
Test3: Some text... 

我怎麼會在同一bash腳本,上面的輸出存儲爲一個或多個變量?

理想的解決辦法是爲它準備在有條件使用像這樣:(行輸出中的一個將被存儲在$ln1等)

if [ $ln1 = "Test1: Some text..." ] ; then 

回答

22

所以,你要

output=$(command) 
while read -r line; do 
    process "$line" 
done <<< "$output" 

請參閱Bash manual中的「Here strings」。

process substitution

while read -r line; do 
    process "$line" 
done < <(command) 
+0

是否可以做原來的命令後,這樣的事情已經運行,並存儲在輸出變量? – f1lt3r 2015-06-11 16:57:40

+0

我不明白你的問題:我在第一段代碼中證明了這一點。 – 2015-06-12 01:53:21

+0

道歉,我意識到我以一種毫無意義的方式問道。我的意思是,是否有可能捕獲已經運行的命令的輸出?即:捕獲終端輸出的最後一行,而不管運行哪個命令? 我能找到的最接近的東西是使用'script'命令,請參閱:[script.html](http://www-users.cs.umn.edu/~gini/1901-07s/files/ script.html) 但是,'script'命令包含了用戶看到的所有內容,包括'ESC'字符等,而不僅僅是之前命令的標準輸出。 – f1lt3r 2015-06-12 13:40:53