Bash 스크립트에서 getopts 사용

Fumbani Banda 2023년1월30일
  1. Bash getopts에서 인수가 있는 구문 분석 옵션
  2. Bash getopts에서 인수가 없는 구문 분석 옵션
Bash 스크립트에서 getopts 사용

이 튜토리얼은 인수가 있는 옵션과 인수가 없는 옵션을 구문 분석하여 bash 스크립트에서 getopts를 사용하는 방법을 보여줍니다.

Bash getopts에서 인수가 있는 구문 분석 옵션

nc 문자는 모두 :가 앞에 있습니다. 이는 -n 또는 -c 옵션이 사용될 때마다 인수가 제공될 것으로 예상한다는 것을 의미합니다. 변수 optgetopts에 의해 구문 분석된 현재 옵션의 값을 보유합니다.

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 avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

관련 문장 - Bash Script