매개변수 목록을 함수에 전달하는 방법

매개변수 목록을 함수에 전달하는 방법

루프의 매개변수를 함수로 전달하고 싶습니다 func. 단순화를 위해 루프를 사용한다고 가정하겠습니다.

for x in {1..5}
do
    for y in {a..c}
    do
    echo $x$y
    done
done

어떻게 해야할지 모르겠어서 그냥 울렸습니다. .func 1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c

어떻게 해야 하나요?

답변1

func {1..5}와 동일할 것입니다 func 1 2 3 4 5.

일반적으로 단어 목록은~을 위한명령문은 명령의 단어 목록과 같으므로 명령을 호출하여 루프를 바꾸고 사용한 목록을 명령 인수로 이동하면 됩니다.

또한 여러 개의 중괄호 확장을 함께 사용할 수 있습니다. {1..5}{a..c}그러면 목록이 (고유한 단어로) 생성되므로 1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c표시하는 경우에는 func {1..5}{a..c}작동합니다.


루프가 최종 명령의 매개변수를 생성하기 위해 더 복잡한 작업을 수행하는 경우 배열을 사용하여 이를 수집할 수 있습니다(Bash/ksh/zsh에서). generate_arg다음 매개변수를 생성하기 위해 이를 실행해야 한다고 가정해 보겠습니다 func.

args=()
for i in {1..5}; do
    args+=( "$(generate_arg "$i")" )
done
func "${args[@]}"

(배열을 사용하면 공백이 포함된 값이 그대로 유지되므로 값을 문자열로 연결하는 것보다 낫습니다.)

관련 정보