[Shell] Pass array to function - 함수에 배열 전달하기

by 스뎅(thDeng) on

배열을 함수에 전달하고 싶을 때. (역시 매번 까먹어서 정리 =_=;;)

배열을 루프로 돌리고 싶을 때는 [Shell] Loop though an array - for 루프에 배열 전달하기

SERVERS[@] 함수에 전달할 때는 골뱅이를 써주고, 함수에서는 전달인자처럼 사용하면 된다. 여기서는 첫번째 전달인자이기 때문에 ${!1}을 사용하는데, 느낌표를 붙여줘서 배열 요소의 값을 참조하도록 한다.

function test() {
for SERVER in ${!1}
do
    echo ${SERVER}
done
}

SERVERS=(api01 api02 api03)
test SERVERS[@]

아래처럼 쓸 수도 있다. 배열의 요소를 함수에 전달하는 것이 아니라, 배열을 전달한 다음 함수에서 각 요소를 꺼내 사용한다.

function test() {
for SERVER in ${1}[@]
do
    echo ${!SERVER}
done
}

SERVERS=(api01 api02 api03)
test SERVERS

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License