[英]how to access stdin in jrunscript or jjs (on win7)
我在谷歌上搜索了很多,但找不到任何告訴我在使用 jrunscript 執行 JS 時如何訪問標准輸入的信息。
這似乎是不可能的。
用例:我想編寫一個小的 JS 腳本,它執行正則表達式替換以在 cmd 上使用,我想通過管道傳遞文本數據,例如
>cat file | jrunsscript -f apply-regex.js
...結果出來了(我可以將其導入文件等)。
因此,我需要訪問 stdin 才能讀取通過管道傳輸到 jrunsscript 的內容。
旁注:為此,我通常使用 sed,但是當正則表達式本身在某些情況下涉及引號時會出現問題。
不確定這是否是主題: http : //docs.oracle.com/javase/7/docs/technotes/tools/share/jsdocs/GLOBALS.html
read(prompt, multiline)
在打印提示后從 stdin 中讀取一行或多行
根據您的評論,我認為您需要使用如下所示的參數: 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 選項
但仍然不清楚這是否正是您要尋找的。
到目前為止的解決方法是
在 Java 中暢游。
在文件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
echo Hi! | jjs -scripting JJS_SAYS_HI.js
輸出是JJS says: Hi!
(在 Windows 上)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.