環境変数の取得
Posted feedbacks - D
D 2.0 + 標準ライブラリ (Phobos)、Linuxで動作確認。連想配列を作ってしまう方針で。 Phobosには環境変数APIが無いので、Cの environ(7) を直接呼び出します。 C文字列をDのstringに変換する処理が面倒ですね。もっとうまいやり方があるような気がする...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import std.stdio;
import std.string;
import std.c.linux.linux: environ;
import std.c.string: strlen;
void main()
{
char** p;
string[string] envAA;
for (p = environ; *p != null; p++) {
char[] key_and_value = (*p)[0 .. strlen(*p)]; // "FOO=BAR"
int iEqual = key_and_value.find('='); // index to '='
string key = cast(string)(key_and_value[0 .. iEqual]);
string value = cast(string)(key_and_value[iEqual + 1 .. $]);
envAA[key] = value;
}
envAA.rehash;
foreach(key, value; envAA) {
writefln("%s: %s", key, value);
}
writefln("PATH = %s", envAA["PATH"]);
}
|
変数名から値を得るだけなら、getenv 関数があります。
see: std.process - D Programming Language - Digital Mars
1 2 3 4 5 | private import std.stdio, std.process;
void main() {
writeln(getenv("PATH"));
}
|


mattsan
#6736()
Rating0/0=0.00
コマンドライン引数の取得がありましたが、今回は環境変数の取得をお願いします。
取得した内容を表示できればよいですが、可能でしたらキーから値を得る手段の実装もお願いします。
[ reply ]