我创建了一个别名
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)