外部パラメータ値を指定する場合は、その値の前後にハイフンを付ける必要があります。ハイフンがない場合は、テキストの前後にハイフンが必要であるというエラーを反映する必要があります。
例えば、外部パラメーターは次のようになります。
-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