簡體   English   中英

如何在 jrunscript 或 jjs 中訪問 stdin(在 win7 上)

[英]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 選項

但仍然不清楚這是否正是您要尋找的。

到目前為止的解決方法是

  1. 將輸入通過管道傳輸到文件中
  2. 將臨時文件作為 arg 傳遞給 jsrunscript
  3. 根據需要使用 JS 輸出

在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM