#TIL #bash 고정 인자와 가변 인자를 받는 스크립트
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칸을 밀어낸다.