运行expect时标准输出没有结果

时间:2010-09-23 07:02:01

标签: bash command expect

每当我尝试运行脚本时,它都不会向我显示标准输出的任何结果。

#!/usr/bin/expect --
send [exec tail -f /var/opt/jboss/log/jbossall.log | grep -i "pattern"]

请告知原因。

1 个答案:

答案 0 :(得分:0)

exec命令永远不会完成,因为您正在使用tail -f。从尾部的信息页面:“永远循环尝试读取文件末尾的更多字符”。由于exec未完成,因此永远不会调用send

你可能需要这样做:

spawn whatever
set whatever_id $spawn_id

spawn sh -c {tail -f /var/opt/jboss/log/jbossall.log | grep -i "pattern"}
set tail_id $spawn_id

while {1} {
    expect -i $tail_id "(.*)\n"
    send -i $whatever_id $expect_out(1,string)
}