2011-05-02 126 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