less than 1 minute read

bash에서 고정 인자와 가변 인자가 섞여 있다면 어떻게 처리해야 할까?

우선 가변 인자부터 처리하자. $@ 파라미터를 사용하면 가변 인자를 처리할 수 있다.

$ cat ./test
#!/usr/bin/env bash

for arg in "$@"
do
    echo "$arg"
done

$ ./test source target1 "target 2" target3
source
target1
target 2
target3

for 문(statement)과 $@ 파라미터를 사용하면 전체 인자를 순회할 수 있다. 여기서 source는 고정 인자고 target 인자들은 가변 인자다. 고정 인자만 따로 처리하고 가변 인자를 순회할 수 있을까?

$ cat ./test
#!/usr/bin/env bash

echo "source: $1"
shift

for arg in "$@"
do
    echo "$arg"
done

$ ./test source target1 "target 2" target3
source: source
target1
target 2
target3

shift 내장 명령(builtin)을 사용하면 전체 파라미터 인덱스를 바꿀 수 있다. shift 인자를 생략하면 1칸을 밀어낸다.

참고