鉴于Java 9在我们身上,我们终于可以使用jshell进行java REPL了,我希望有一种方法可以将一个shebang添加到脚本中并让jshell解释它.
我尝试创建test.jsh:
#!/usr/bin/env jshell -s
System.out.println("Hello World")
/exit
然而,这给了:
⚡ ./test.jsh
| Error:
| illegal character: '#'
| #!/usr/bin/env jshell -s
| ^
| Error:
| illegal start of expression
| #!/usr/bin/env jshell -s
| ^
Hello World
事实证明,在OpenJDK https://bugs.openjdk.java.net/browse/JDK-8167440中有一个增强请求.
有没有其他方法可以做到这一点?
解决方法:
采用
//usr/bin/env jshell –show-version –execution local“$0”“$@”;退出$?
作为test.jsh的第一行. test.jsh脚本可能如下所示:
//usr/bin/env jshell --show-version "$0" "$@"; exit $?
System.out.println("Hello World")
/exit
当然,命令行选项–show-version是可选的,但会立即反馈工具正在运行
额外的命令行选项–execution local阻止jshell生成另一个VM.这会加快启动时间,如果脚本代码抛出异常,则本地VM将退出.
有关更多选项,请参阅jshell –help和jshell –help-extra的输出.