Hatena::Grouperlang

檜山正幸のErlang未確認情報 RSSフィード

 | 

2009-03-18 (水)

コマンドライン引数 (3)

| 09:28

http://erlang.g.hatena.ne.jp/m-hiyama/20090314/1237010526 :

erlコマンドのコマンドライン引数を取ろうと思ったら、どうもうまくいかない。

事情は後で書く、たぶん。

で事情を書いたが、あまり解明されてない。マニュアルを読みながら、実験をしてみるのが確実。

マニュアルは読んでも信用しないが吉。

実験用コード

実験のために次のコードをコンパイルして、beamファイルをコードパスがとおっている場所に置く(カレントディレクトリでいい)。start/0をexportしているのは、-s オプションで簡単に起動できるから。

%% -*- coding: utf-8 -*-

-module(argtest).

-export([start/0]).

print_flag_arguments() ->
  List = init:get_arguments(),
  lists:foreach(
    fun ({N, V}) -> io:format("~p --> ~p~n", [N, V]) end,
    List).

print_plain_arguments() ->
  List = init:get_plain_arguments(),
  io:format("(plain) --> ~p~n", [List]).

start() ->
  print_flag_arguments(),
  io:fwrite("~n"),
  print_plain_arguments().

OSコマンドラインから、

OS-Shell> erl -emu_args -noshell -s argtest -s init stop

としてargtestを実行できる。ただし、-s ini stop の後に安易に引数を書くとクラッシュする(-sオプションの仕様)。クラッシュはしなようにして、色んな引数を試してみればよい。

 |