N個の配列のすべての可能な組み合わせで構成された配列を作成します。

N個の配列のすべての可能な組み合わせで構成された配列を作成します。

別のbashスクリプトを実行するスクリプトがあります窒素オプションのパラメータは次のとおりです。

./my_script.sh --param_1 <value> --param_2 <value> ... --param_N <value>

私の主なスクリプトで私が欲しい窒素可能なすべての値を持つ配列窒素パラメータは次のとおりです。

PARAM_1_VALS=(1 10 50)
PARAM_2_VALS=(50 10 20)
PARAM_N_VALS=("a" "b" "c")

配列が与えられたら、どの関数があるのか​​知りたいです。窒素配列、これらの配列の可能なすべての組み合わせを返します(例:(1 50 "a")、(1 50 "b")、...、(50 20 "c"))

必要なスクリプトは次のとおりです。

all_combinations=get_all_combinations(params_array)
for combination in ${all_combinations[@]}; do
   #execute my_script.sh with combination
done

現在の解決策は、すべての値を取得するためにネストされたループのすべての配列を繰り返すので、正しく実行されません。入れ子になったループを削除し、より良い方法を見つけたいです。

ps:私が探しているのはPythonitertools.combinations()ソリューションと非常によく似ています。

ありがとう

答え1

中かっこ拡張は使用できますが、リテラル値でのみ機能します。つまり、中かっこ内に変数を使用することはできません。

for c in --param1\ {1,10,50}\ --param2\ {50,10,20}\ --param3\ {a,b,c} ; do
    echo "$c"
done

関連情報