我的問題與此相似:How to detect if my shell script is running through a pipe?。區別在於我正在使用的shell腳本是用Node.js編寫的。如何檢測Node.js腳本是否通過shell管道運行?
比方說,我進入:
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 2017-02-19 15:54:46