コマンドラインの引数を得る方法
Elixirでコマンドラインのツールを書く方法が(自分の観測範囲内では)二通りある。
一つはスクリプトとして実行する方法。もう一つは、escript を使う方法(こっちの方法も名前からするとスクリプトとして実行されてるっぽいけど)。
スクリプトとして実行した場合、System.argv/0 を使えばいつでもコマンドに渡された引数を得ることができるけれど、escript を使った場合は System.argv は nil を返してくる。
ということのメモ。
スクリプトとして実行した場合
ソース
defmodule RunScript do def go(argv) do IO.inspect argv IO.inspect System.argv end end RunScript.go(System.argv)
実行
$ elixir run_script.exs one two three ["one", "two", "three"] ["one", "two", "three"]
escriptを使った場合
ソース
defmodule RunEscript do def main(argv) do IO.inspect argv IO.inspect System.argv end end
実行
$ ./run_escript one two three ["one", "two", "three"] nil
参考
escript を使った書き方は以下のページを参考にした。