Bash

我可以有一個期望在後台執行的(bash)shell嗎?

  • March 10, 2016

我正在嘗試編寫一個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 ***

引用自:https://unix.stackexchange.com/questions/269002