端末で実行して準備ができたら、使用しているポートを出力するサーバータイププログラム(http-server)を起動する必要があります。ポート番号が表示されるのを待ってから、サーバータイププログラムになる別のコマンドを実行したいと思います(ユーザーの対話を実行して許可します)。
ほとんど使えます
http-server | (grep -m 1 "Server runing"; interactiveProgram)
InteractiveProgramは、grepが最初の行と一致した後に開始されますが、インタラクティブではありません.)
答え1
問題は次のとおりです。
http-server | (grep -m 1 "Server running"; interactiveProgram)
interactiveProgram
標準入力は端子に接続されていませんが、http-server
標準出力からパイプに接続されます(grep
完了したら)。
http-server | (grep -m 1 "Server running"; interactiveProgram < /dev/tty)
あなたが欲しいものをする必要があります。
答え2
これをパイプラインの一部として実行すると、@Stephen Kittがすでに述べたように、標準入力は端末に接続されません。ただし、後で実行すると、http-serverが終了するまで実行されません。
回避策は、-loopを使用while
してgrep
1行に1回呼び出すことです。
http-server | while read line; do
echo "$line" | grep "Server running" && { interactiveProgram; break; }
done