我在谷歌上搜索了很多,但没有找到任何东西告诉我在使用jrunscript执行JS时如何访问stdin。
这似乎是不可能的。
用例:我想写一个小的JS脚本,用来在cmd上使用regex-replace,我想通过管道传递文本数据,例如
>cat file | jrunsscript -f apply-regex.js..。然后输出结果(我可以通过管道将结果保存到一个文件中,等等)。
因此,我需要访问stdin,以便读取通过管道传输到jrunsscript的内容。
附注:为此,我通常使用sed,但在某些情况下,当正则表达式本身包含引号时会出现问题。
发布于 2016-01-14 04:47:11
不确定这是否在主题上:http://docs.oracle.com/javase/7/docs/technotes/tools/share/jsdocs/GLOBALS.html
打印提示后,
read(prompt, multiline)从标准输入中读取一行或多行
根据您的评论,我认为您需要使用如下所示的参数:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jrunscript.html
用法:
jrunscript -f test.js "Hello World"
获取参数:
document.write(arguments[0]);
经过更多的研究,您也许能够通过交互模式阅读:
jrunscript -f -
交互模式,从标准输入中读取脚本。如果使用此选项,则这应该是最后一个-f选项
但是仍然不清楚这是否是你想要的。
发布于 2016-01-26 23:21:48
到目前为止,解决方法是
发布于 2020-01-24 07:17:29
去爪哇玩玩吧。
在文件JJS_SAYS_HI.js中
//Java-y bit
var br = new java.io.BufferedReader(
new java.io.InputStreamReader(
java.lang.System.in,
java.nio.charset.StandardCharsets.UTF_8)
);
//JavaScript-y bit
var line = "";
while(br.ready()) {
line = br.readLine();
print("JJS says: ${line}");
};使用如下命令测试整个混乱:echo Hi! | jjs -scripting JJS_SAYS_HI.js
输出为JJS says: Hi! (在Windows上)
https://stackoverflow.com/questions/34772180
复制相似问题