Java 9 がリリースされ、ようやく Java REPL が使えるようになったので、jshell
スクリプトにシェバンを追加して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ではこれに対する機能強化の要望があることが判明した。参考:。
他にこれを行う方法はありますか?
ベストアンサー1
使用
//usr/bin/env jshell --show-version --execution local "$0" "$@"; exit $?
の最初の行としてtest.jsh
。test.jsh
スクリプトは次のようになります。
//usr/bin/env jshell --show-version "$0" "$@"; exit $?
System.out.println("Hello World")
/exit
コマンドライン オプションは--show-version
、もちろんオプションですが、ツールが実行中であるというフィードバックを即座に提供します。
の余分なコマンドライン オプションは、別の VM の生成を--execution local
防ぎますjshell
。これにより起動時間が短縮され、スクリプト コードによって例外がスローされた場合、ローカル VM は終了します。
その他のオプションについては、jshell --help
およびの出力を参照してください。jshell --help-extra
アップデート
こちらもご覧くださいhttps://github.com/jbangdev/jbang Javaスクリプトを楽しむ.java
は、コマンドラインからファイルを実行するための便利なラッパーを提供します。