Bash
根據標準輸出頻率執行命令
我有一個程序可以非常快速地在一批文本中寫入標準輸出,但是輸出沒有我可以為其編寫期望循環的特定輸出。我的程序的標準輸出範例:
[time:here] random text 1 [time:here] random text 2 [time:here] random text 3 [time:here] random text 4 [time:here] random text 5 [time:here] random text 6 [time:here] random text 7
然後它等到我與它互動,然後它再次使用相同樣式的文本寫入標準輸出:
[time:here] random text 8 [time:here] random text 9 [time:here] random text 10 [time:here] random text 11 [time:here] random text 12 [time:here] random text 13 [time:here] random text 14
標準輸出的列印速度非常快,例如在幾毫秒內,然後等待我與之互動。一旦我進行互動,stdout 會很快再次寫入,它會等待。這會重複,直到我關閉程序。
echo
在等待之間,我想在我與程序互動的時間(使用或類似的東西)發送一個命令來寫入另一個文件。有什麼辦法可以定位“等待”並
echo
在每次等待我的標準輸出後執行命令?例如,如果等待 > 5 秒然後執行echo
命令,並等待 stdout 再次更改?
您可以使用帶有超時的阻塞讀取來確定輸出何時停止。例如,Bash
read
支持超時參數。如果 STDIN 的輸出停止超過 2 秒,以下腳本將寫入一行:#!/bin/sh while read -r firstline; do while read -r -t 2 line; do continue done echo "---- No data in 2 seconds ----" done
如果需要,可以將回顯重定向到不同的日誌,並且可以修改腳本以回顯從標準輸入中讀取的數據。