루프의 매개변수를 함수로 전달하고 싶습니다 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[@]}"
(배열을 사용하면 공백이 포함된 값이 그대로 유지되므로 값을 문자열로 연결하는 것보다 낫습니다.)