環境
$ jshell -version jshell 17
本題
小ネタ。
jshellコマンドは標準入力からソースコードを流し込めるので、シェルのヒアドキュメントを使うことでソースコードのファイルを作らずにJavaプログラムを実行できる。
例えば「CIのときにあらかじめcreate databaseしておきたい!けどpsqlコマンドを使うためだけにapt-get install postgresqlするのもなんかやだ!!手元にJDBCドライバはある!!!」みたいなレアな状況で役に立つ。
$ jshell -s --class-path ~/local/lib/postgresql-42.3.1.jar <<EOS import java.sql.DriverManager; try (var c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/", "postgres", "postgres"); var s = c.createStatement()) { s.execute("create database testdb"); } EOS