2015-12-17 56 views
0

我正在嘗試重定向到bash的node.js程序。 該命令包含一個像這樣的字符串。是否有一個相當於bash的<()sh

var virtualFile = '<(cat <<EndOfText\n' + fileContents + 'EndOfText\n)'; 

然而,當我重定向吧,SH在該文本怪胎,運行bash之前。

我想知道'<()'在sh中是否有等價物。由於

+3

爲什麼你需要所有的併發症?你不能直接使用here-doc嗎? – rici

+0

它被稱爲[過程替代](http://mywiki.wooledge.org/ProcessSubstitution)。它不是POSIX,所以在'sh'中沒有等價物。畢竟,你打算做'<(貓...)'? – muru

回答

1

如果您使用的進程替換(<(...))創建一個名爲僞文件,你可以在命令行的工具,它讀取其stdin上提供,那麼你應該認真考慮只是把內容( fileContents)轉換成臨時文件。在大多數現代系統中,這將會變得具有合理的性能。它的其他優點是它很容易和兼容所有的shell,不僅僅是那些試圖與Posix兼容的。另一方面,如果你只需要將fileContents加入一個實用程序,並且可以使用stdin來達到這個目的,那麼你的機器就太多了。只需使用here-doc本身('<<EndMarker\n' + fileContents + 'EndMarker\n'

相關問題