私の質問はこれと似ています:How to detect if my shell script is running through a pipe?。違いは、私が作業しているシェルスクリプトはNode.jsで書かれていることです。Node.jsスクリプトがシェルパイプ経由で実行されているかどうかを検出する方法は?
はのは、私が入力したとしましょう:
echo "foo bar" | ./test.js
次に、どのように私はtest.js
に値"foo bar"
を得ることができますか?
私はUnix and Node: Pipes and Streamsを読んだことがありますが、それは非同期の解決方法を提供するように見えます(間違いない限り)。私は同期ソリューションを探しています。また、この手法では、スクリプトがパイプされているかどうかを検出するのは簡単ではないようです。
TL; DRは、私の質問は二つある:
- Node.jsのスクリプトは、例えば、シェルのパイプを通して実行されているかどうかを検出する方法
echo "foo bar" | ./test.js
? - もしそうなら、Node.jsのパイプされた値を読み取る方法は?
残念ながら、これは子プロセスでは失敗します: 'node -p -e" require( 'child_process')exec(\ "node -p -e 'process.stdin.isTTY' \"、(err 、res)=> console.log( 'err:'、err、 'res:'、res)) '' – maxlath