日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

コマンドライン引数を取る

コマンドライン引数を取る方法のメモ。
一言で言えば -main 関数の arg にベクタとして引数格納されてるのでそこで好きにしてと言った感じ。

まずは検索。

前者は記事にある通り黒魔術でかつ 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 テンプレートが選択される。