【发布时间】:2016-05-08 05:23:44
【问题描述】:
Supposedlyjjs 是 Java 8 版本的 nashorn,ready for shell-scripting。但是,当我编写具有执行权限的文件时:
#!/usr/bin/jjs
arguments.forEach(function(v,i,a){print(v);});
运行它会产生一些不太理想的 shell 脚本行为:
$./file.js
$./file.js one two
java.io.IOException: one is not a file
$./file.js -- one two
one
two
$./file.js file.js -- one two # what were they thinking
one
two
one
two
$
所以,我不希望我正在编写的 this 脚本允许在文件运行后对其进行任意解释,也许我应该在 shebang 中使用--,例如:
#!/usr/bin/jjs --
arguments.forEach(function(v,i,a){print(v);});
但这变得不太有用:
$./file.js
jjs>^D
$./file.js one two
jjs>^D
$./file.js -- one two
jjs>
是的,进入 REPL 提示符正是我认为应该不发生的事情。
我应该如何使用直接传递而不由 jjs 本身解释的参数来执行脚本,以便我可以得到如下行为:
$./file.js one two
one
two
$
【问题讨论】:
-
我找不到他们声称它可以用作 shell 脚本的地方?不过,文档确实提到了一个 jrunscript。
-
@RobAu 我想我没有链接我读到的声称它的博客文章,并且可能不清楚
jjs是jrunscript的补充,在使用标志时具有扩展名-scripting启用$ARG、$ENV、heredocs、反引号和更多脚本便利。