매개변수가 얼마나 많은지 모를 때 매개변수를 하나씩 조회하면서 사용하고 싶다면
shift
를 이용해 볼 수 있습니다.
스크립트가 shift
명령어를 만나면 커맨드라인 매개변수를 앞으로 차례대로 한 칸씩 당깁니다.
즉 $3
-> $2
가 되고,
$2
-> $1
가 되며,
기존의 $1
의 값은 사라집니다.
이를 응용하면 매개변수의 개수가 얼마나 될지 모를 때 반복해서 참조하기 유용합니다.
$ cat test1
#!/bin/bash
count=1
while [ -n "$1" ]
do
echo "parameter #$count : $1"
(( count = count + 1 ))
shift
done
$ ./test1 A B C D E
parameter #1 : A
parameter #2 : B
parameter #3 : C
parameter #4 : D
parameter #5 : E
코드 리뷰
while
문은shift
로 매개변수가 앞으로 하나씩 당겨지다가 아무런 값이 존재하지 않게 되면 종료됩니다.count
변수는1
부터 매개변수의 개수까지1
씩 증가합니다.shift
를 통해 매개변수가 하나씩 앞으로 당겨지면서$1
이 되기 때문에 계속해서$1
을 참조하면 됩니다.
shift
에 매개변수를 주면 해당 수만큼 앞으로 당겨집니다.
$ cat test1
#!/bin/bash
shift 2
echo $1
hyeob@hyeob:~/devops/Script$ ./test1 A B C D E
C