Bash
我可以有一個期望在後台執行的(bash)shell嗎?
我正在嘗試編寫一個
expect
腳本,該腳本一旦啟動就會監視我的終端並在每次找到匹配項時執行一個命令。這甚至可能
expect
嗎?如果是這樣,expect_background
使用正確的方法是什麼?編輯:為清楚起見,我正在嘗試
expect
從終端輸出,而不是輸入…
是的,你可以用 bash 來做到這一點:將標準輸出重定向到一個
tee
程序,當你看到你的模式時可以做一些事情。tee
很好,因為它還將標準輸出放在標準輸出上。exec 1> >(tee >(awk '/foobar/ {print "*** DING DING ***"}'))
這會將標準輸出發送到程序替換 1,
tee
,它將其標準輸入複製到標準輸出和程序替換 2,這是一個執行某些操作的 awk 腳本。您可以將程式碼或腳本路徑放在內部程序替換中。展示
$ echo this is foobar stuff this is foobar stuff $ exec 1> >(tee >(awk '/foobar/ {print "*** DING DING ***"}')) $ date Thu Mar 10 16:37:14 EST 2016 $ pwd /home/jackman $ echo this is foobar stuff this is foobar stuff *** DING DING ***