getops 매개변수 할당을 관리하는 방법

getops 매개변수 할당을 관리하는 방법

이것이 나의 첫 번째 질문입니다.

옵션이 포함된 작은 스크립트를 만들려고 하는데 getopts이렇게 하고 있습니다. 이상한 점은 다음과 같습니다.

매개변수가 변수에 할당되지 않거나 항상 if코드 블록에 들어갑니다(이것이 문제인 것 같습니다).

스크립트는 다음과 같습니다.

#!/bin/bash

function work () {
    echo "It Works" }

function help () {
    echo "Print some help and options" }

while getopts ha:b: OPT; do
    case $OPT in
        -h)
            help
            exit
            ;;
        -a)
        OPTA=$OPTARG
        ;;
        -b)
        OPTB=$OPTARG
            ;;
        \?)
        help
            break
            ;;
    esac done

echo $OPTB

if  [[ -z $OPTB ]]; then
    echo "ERROR. Needs OPTB"
fi

if [[ -n $OPTB ]]; then
    echo "All OK untill here"
    work
fi

항상 오류 메시지를 인쇄합니다.

답변1

getopts옵션에서 "-" 기호를 제거하세요.

따라서 다음이 필요합니다.

while getopts ha:b: OPT; do
    case $OPT in
        h)
            help
            exit
            ;;
        a)

 ....

getoptsunset OPTA OPTB변수는 스크립트가 수신하는 환경에 있을 수 있으므로 ()를 호출하기 전에 변수를 지워야 합니다 . 또한 " 옵션 없음 "과 " 빈 인수가 있는 옵션"을 구별할 수 없으므로 -b ""스크립트 호출이 유효한 경우 도 고려하십시오.[[ -z $OPTB ]]-b-b

관련 정보