パラメータの条件を提供する方法

パラメータの条件を提供する方法

外部パラメータ値を指定する場合は、その値の前後にハイフンを付ける必要があります。ハイフンがない場合は、テキストの前後にハイフンが必要であるというエラーを反映する必要があります。

例えば、外部パラメーターは次のようになります。

-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

関連情報