Я создал псевдоним
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)