일반적으로 쉘 스크립트를 만들 때 플래그 인자 값을 전달받아 처리하는 루틴을 구현하고자 하는 경우 getopt 나 getopts를 이용하는 경우가 많다.
여기서는, 또 다른 방법으로 for loop 와 case 를 이용해서 플래그 인자 값을 분류하고 처리하는 루틴을 구현하는 방법으로써 쉘 스크립트 개발에 getopt 나 getopts 에 친숙하지 않은 개발자에게 손쉽게 응용 가능할 것이라 생각되는 루틴이어서 발췌한다.
### pivpn.io 의 설치 스크립트로 부터 발췌한 파싱 방법은 아래와 같음.
# Check arguments for the undocumented flags
for ((i = 1; i <= "$#"; i++)); do
j="$((i + 1))"
case "${!i}" in
"--skip-space-check")
skipSpaceCheck=true
;;
"--unattended")
runUnattended=true
unattendedConfig="${!j}"
;;
"--reconfigure")
reconfigure=true
;;
"--show-unsupported-nics")
showUnsupportedNICs=true
;;
"--giturl")
pivpnGitUrl="${!j}"
;;
"--gitbranch")
pivpnGitBranch="${!j}"
;;
"--noipv6")
pivpnforceipv6=0
pivpnenableipv6=0
pivpnforceipv6route=0
;;
"--ignoreipv6leak")
pivpnforceipv6route=0
;;
esac
done