我正在尝试重定向到bash的node.js程序。 该命令包含这样的字符串。
var virtualFile = '<( cat <<EndOfText\n' + fileContents + 'EndOfText\n)';
但是,当我重定向它时,在运行bash之前,sh会对该文本感到厌恶。
我想知道'&lt;()'是否在sh中具有等价物。感谢
答案 0 :(得分:1)
如果您正在使用进程替换(<(...)
)来创建一个命名的伪文件,您可以在命令行上将该文件提供给也读取其stdin
的实用程序,那么你应该认真考虑将内容(fileContents
)放入临时文件中。在大多数现代系统中,这将是合理的性能。它的另一个优点是它易于兼容所有外壳,而不仅仅是那些试图与Posix兼容的外壳。
另一方面,如果您只需要将fileContents
提供给实用程序,并且您可以将stdin用于此目的,那么您已经拥有了太多的机器。只需使用here-doc本身('<<EndMarker\n' + fileContents + 'EndMarker\n'
)