jshellコマンドを使って.javaファイル無しでJavaプログラムを実行する
環境
$ 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