我創建了一個別名
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
從而啟動一個Web伺服器,然後開啟該伺服器提供的頁面。但在第一個命令完成之前,第二個命令不會運行。
有沒有辦法運行該命令,然後在第一個命令輸出特定字串時開始運行第二個命令?
第二個命令必須能夠看到第一個命令列印出WEBrick::HTTPServer#start
,這意味著伺服器已經在運行,並且在啟動之前。
答案1
這是從 stackoverflow.com 上的這個答案得出的:
本質上,
one_command 2>&1 | tee >(grep -Fq keyword && other_command)
2>&1
當您還想捕獲輸出時,就需要它stderr
,如果您不希望這樣,請將其忽略。
在你的情況下,這應該有效:
ruby -run -e httpd -- -p 5000 . 2>&1 \
| tee >(grep -Fq 'WEBrick::HTTPServer#start' && open localhost:5000)