다른 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: 제가 찾고 있는 것은 Python itertools.combinations()
솔루션과 매우 유사합니다 .
감사해요
답변1
중괄호 확장을 사용할 수 있지만 리터럴 값에만 작동합니다. 즉, 중괄호 안에 변수를 사용할 수 없습니다.
for c in --param1\ {1,10,50}\ --param2\ {50,10,20}\ --param3\ {a,b,c} ; do
echo "$c"
done