直積の求め方
Introduction
プログラムのテストの際,各変数の組み合わせをすべて網羅したいときがあります. そういうとき,よくあるのがShellscriptによるfor文ですが,
for K in 2 4 8 16; do for L in 1 2 3 4; do for M in 100 200 300 400; do echo "./foo -k $K -l $L -m $M >log_${K}_${L}_${M}" >>cmdli done done done cat cmdli | xargs -I % bash -c '%'
と書くとI/Oの遅延になかなか遅いのですし,スクリプト行数が多めです. ちなみにこれで64パターンです.
Method
ただし,このサイトを参考にして,
perl -E '@a = @{[glob("{2,4,8,16}{1,2,3,4}{100,200,300,400}")]}; print"@a\n"'
と書いてもこれでは出力の再利用性が低い上,遅いのでイケていません.
もうひと工夫必要です.