별칭을 만들었어요
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
웹 서버를 시작한 다음 서버에서 제공하는 페이지를 엽니다. 그러나 두 번째 명령은 첫 번째 명령이 완료될 때까지 실행되지 않습니다.
명령을 실행한 다음 첫 번째 명령이 특정 문자열을 출력할 때마다 두 번째 명령 실행을 시작하는 방법이 있습니까?
두 번째 명령은 첫 번째 명령이 출력되는 것을 확인할 수 있어야 합니다 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)