我运行一个程序,该程序会向
并且它是如何工作的:
stdout
大量写入内容。在一定时间后,该程序会向 stdout
打印一行定义好的内容,我需要触发此内容以并行调用函数(而不终止第一个程序)。
如何在 bash 中实现这个目的?
稍微解释一下:我需要运行一个安装程序,该程序是从挂载的 dvd1.iso 中的可执行文件。过一段时间后,它会打印出 "Info: Eject DVD 1 and insert DVD 2 to continue.",我需要自动完成这个操作。
根据这里提供的答案,我的测试设置如下:
talker.sh
#!/bin/bash
for VAR in {1..20}
do
sleep 1s
echo "huhu $VAR"
done
listener.sh
#!/bin/bash
bash talker.sh \
| tee output.txt \
| grep --line-buffered "huhu 3" \
| ( while read -r line; do echo "found"; done; ) &\
tail -f output.txt
并且它是如何工作的:
$ bash listerner.sh
huhu 1
huhu 2
huhu 3
found
huhu 4
huhu 5
...
grep | while read
? - KamilCukcommand_name &
命令,但你应该能够从程序内部执行它。 - Nunchyexpect
的工作。它的目的正是在程序输出特定内容时执行操作。 - that other guy