매개변수에 대한 조건을 제공하는 방법

매개변수에 대한 조건을 제공하는 방법

외부 매개변수 값을 제공하는 경우 해당 값 앞과 뒤에 하이픈이 와야 합니다. 하이픈이 없으면 텍스트 앞뒤에 하이픈이 필요하다는 오류가 반영되어야 합니다.

예를 들어, 외부 매개변수는 다음과 같아야 합니다.

-report-country-sales-price-

답변1

예를 들어 POSIX와 유사한 셸에서는 bash다음을 수행할 수 있습니다.

case $1 in
  (-*-) ;; # OK
  (*) echo >&2 "The first parameter must start and end with a -"; exit 1
esac

보다 구체적인 일치를 위해서는 구체적으로 다음을 수행하십시오 bash.

regex='^-([[:alpha:]]+)-([[:alpha:]]+)-([[:alpha:]]+)-([[:alpha:]]+)-$'
if [[ $1 =~ $regex ]]; then
  A=${BASH_REMATCH[1]}
  B=${BASH_REMATCH[2]}
  C=${BASH_REMATCH[3]}
  D=${BASH_REMATCH[4]}
else
  echo >&2 "First parameter must be -letters-letters-letters-letters-"
  exit 1
fi

또는 다양한 수의 -구분된 단어를 허용합니다.

regex='^(-[[:alpha:]]+){2,6}-$'
if [[ $1 =~ $regex ]]; then
  IFS=- read -ra words <<< "$1" # OK here as $1 is guaranteed not to
                                # contain newline characters at this
                                # point.
  A=${words[1]}
  B=${words[2]}
  C=${words[3]-not-supplied}
  D=${words[4]-not-supplied}
  E=${words[5]-not-supplied}
  F=${words[6]-not-supplied}
else
  echo >&2 "First parameter must be list of 2 to 6 - separated words"
  exit 1
fi

관련 정보