Bash 스크립트에서 getopts 사용
Fumbani Banda
2023년1월30일
Bash
Bash Getopts
Bash Script
이 튜토리얼은 인수가 있는 옵션과 인수가 없는 옵션을 구문 분석하여 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.
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Fumbani Banda
