Very Hard Delight Life

内容はLinux, HW, プログラミング, HaFaBra.

直積の求め方

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ワンライナーを使うと早そうな気がします.

qiita.com

ただし,このサイトを参考にして,

perl -E '@a = @{[glob("{2,4,8,16}{1,2,3,4}{100,200,300,400}")]}; print"@a\n"'

と書いてもこれでは出力の再利用性が低い上,遅いのでイケていません.

もうひと工夫必要です.