メタプログラミング的な、、、、3
メタプログラミング的な、、、、の第3弾ですw
何か安易な方向に暴走してるような気もしますが、、、
過去、2つのメタプログラミング的手法は、プログラムでC言語、R言語ソースの一部を吐かせて、それを強引にinclude(C言語) やsource(R言語)で取り込んで活用するという話でしたが、今度はshell script をプログラムに吐かせて活用してるという話w
自作システムトレードの正体はいくつかの shell script なんですが、、、、
運用すべきストラテジー(自動売買ルール)の名前とパラメタがcsv形式で保存されていて、それぞれをどう実行させるか? って問題
これまでは、手作業でshell script を弄ってたんですが、、、
最初に考えたのは for 文の利用
でも、csvファイルからストラテジーの名前を取り出して for 文にぶち込む方法が思いつかない
それにパラメタもあるし、、、
で閃いたメタプログラム的手法は、、、、
- csvファイルを読んでshell script を吐くプログラムを作る
- shell スクリプト内でそのプログラムを起動しリダイレクトする
- shell スクリプト内でリダイレクトしたshell スクリプトを実行
て方法でうまく実現できましたw
「csvファイルを読んでshell script を吐くプログラムを作る」って部分が大変そうですが、awkを使うと楽ちんです
こんな感じ
#!/bin/awk
BEGIN { FS="," }
$1 !~ /^#/{
printf("echo ./bin/su7_%s\n",$1)
printf("./bin/su7_%s\n",$1)
printf("./bin/output%s su7_%s\n",$2,$1)
}
END {}
改めてawkって便利って思いなおしています
追記) #で始まる行はコメントになるので、$1 !~ /^#/ は多分不要だと思います