コマンドライン引数を取る
コマンドライン引数を取る方法のメモ。
一言で言えば -main 関数の arg にベクタとして引数格納されてるのでそこで好きにしてと言った感じ。
まずは検索。
- まるでスクリプト言語のように使う方法
- 外部ライブラリ tools.cli を使う方法
前者は記事にある通り黒魔術でかつ Unix 系 OS なのでさておき、後者の方法をいきなり取るでも
いいんだけどまずは基本的な所から。
以降は leiningen はインストール済とします。
基本的なコマンドライン引数の取得
プロジェクト新規作成
>lein version Leiningen 2.2.0 on Java 1.7.0_25 Java HotSpot(TM) Client VM >lein new app cl-app Generating a project called cl-app based on the 'app' template.
今回サンプルにおいてデフォルトで指定される Clojure 以外の外部ライブラリ設定は不要。
leiningen プロジェクトテンプレートは app にしておくと -main も入るのでそちらで。*1
core.clj 編集
(ns cl-app.core (:gen-class)) (defn -main "コマンドライン引数テスト" [& args] (apply println args))
# 実行してみる
>lein deps >lein uberjar Compiling cl-app.core (略) >java -jar target\cl-app-0.1.0-SNAPSHOT-standalone.jar arg1 arg2 arg3 arg4 arg1 arg2 arg3 arg4
単純な 1,2 個程度の引数を扱うだけならこれで十分。
オプション指定とかもう少し込み入った事したい場合は使った事ないけど tools.cli を改めて調べ
てみても良いかも。
こいつの関連話題として jar に D&D させたものを引数として処理できるか試してみた。
VBS ではできてたんでどうかなーと試しにエクスプローラで jar に適当に選択したファイルを D&D させてみたが無反応だったのでそれは断念。もう少し探せば情報あるのかもしれんけど今の所さほど必要性を感じてないのでまたの機会に。
*1:未指定時は default テンプレートが選択される。