Bash 스크립트에서 getopts 사용
Fumbani Banda
2023년1월30일
이 튜토리얼은 인수가 있는 옵션과 인수가 없는 옵션을 구문 분석하여 bash 스크립트에서 getopts
를 사용하는 방법을 보여줍니다.
Bash getopts
에서 인수가 있는 구문 분석 옵션
n
및 c
문자는 모두 :
가 앞에 있습니다. 이는 -n
또는 -c
옵션이 사용될 때마다 인수가 제공될 것으로 예상한다는 것을 의미합니다. 변수 opt
는 getopts
에 의해 구문 분석된 현재 옵션의 값을 보유합니다.
while getopts n:c: opt
do
case "${opt}" in
n) name=${OPTARG};;
c) country=${OPTARG}
esac
done
echo "I am $name";
echo "And I live in $country";
스크립트를 실행할 때 -n
옵션은 John
을 인수로 제공하고 -c
옵션은 Britain
을 인수로 제공합니다.
bash flags.sh -n John -c Britain
출력:
I am John
And I live in Britain
Bash getopts
에서 인수가 없는 구문 분석 옵션
이것은 -h
옵션이 전달될 때 usage
스크립트를 인쇄하는 간단한 bash 스크립트를 사용하고 -p
옵션이 지정된 폴더 경로와 함께 사용될 때 폴더의 내용을 인쇄합니다.
첫 번째 :
는 getopts
가 오류를 보고하지 않음을 의미합니다. 대신 오류를 직접 처리합니다. 문자 p
는 앞에 :
가 있지만 문자 h
는 없습니다. 즉, -p
옵션을 사용할 때마다 인수가 예상되지만 -h
옵션은 인수 없이 사용할 수 있습니다.
-h
옵션이 전달되면 usage
기능이 호출됩니다. -p
옵션은 path
변수에 전달된 인수를 할당한 다음 list
함수에 인수로 전달됩니다. *
는 -h
또는 -p
가 아닌 옵션이 전달될 때마다 수행할 작업을 지정합니다.
#!/bin/bash
function usage {
printf "Usage:\n"
printf " -h Display this help message.\n"
printf " -p <folder path> List contents of specified folder.\n"
exit 0
}
function list {
ls -l $1
}
while getopts :p:h opt; do
case ${opt} in
h)
usage
;;
p) path=${OPTARG}
list $path
#echo $folder
;;
*)
printf "Invalid Option: $1.\n"
usage
;;
esac
done
-h
옵션을 사용하여 스크립트를 실행합니다.
./getopts.sh -h
Usage:
-h Display this help message.
-p <folder path> List contents of specified folder.
-p
옵션을 사용하여 스크립트를 실행합니다.
./getopts.sh -p /home/fumba/example
total 0
-rw-r--r-- 1 fumba fumba 0 Nov 1 21:43 file1.txt
-rw-r--r-- 1 fumba fumba 0 Nov 1 21:43 file2.txt
drwxr-xr-x 1 fumba fumba 4096 Nov 1 21:43 pictures
잘못된 옵션 -k
로 스크립트를 실행합니다.
./getopts.sh -k
Invalid Option: -k.
Usage:
-h Display this help message.
-p <folder path> List contents of specified folder.
작가: Fumbani Banda