入力内容がナンバープレート(0000-XYZ)形式で、日本語ZIP形式が000-0000かどうかをテストする必要があります。
ベストアンサー1
あなたの場合は、「すべての単一の数字」、つまり「3つの大文字の文字列」を0
意味すると仮定します。XYZ
次のコードは、POSIX ロケールをさらに想定しています。
#!/bin/sh
for string do
case $string in
([0-9][0-9][0-9][0-9]-[A-Z][A-Z][A-Z])
printf '"%s" looks like a number plate\n' "$string"
;;
([0-9][0-9][0-9]-[0-9][0-9][0-9][0-9])
printf '"%s" looks like a Zip-code\n' "$string"
;;
(*)
printf 'Cannot determine what "%s" is\n' "$string"
esac
done
ワイルドカードパターンを使用して、指定された各文字列を一致させ、その型を決定したり、その型を決定できない場合。この文字列はスクリプトのコマンドラインにあります。
テスト:
$ ./script 1234-ABC 234-2345 AAA-BB
"1234-ABC" looks like a number plate
"234-2345" looks like a Zip-code
Cannot determine what "AAA-BB" is
bash
代わりに正規表現を使用してください。
#!/bin/bash
for string do
if [[ $string =~ ^[0-9]{4}-[A-Z]{3}$ ]]; then
printf '"%s" looks like a number plate\n' "$string"
elif [[ $string =~ ^[0-9]{3}-[0-9]{4}$ ]]; then
printf '"%s" looks like a Zip-code\n' "$string"
else
printf 'Cannot determine what "%s" is\n' "$string"
fi
done
(同じコマンドラインパラメータを使用すると、出力は上記と同じです。)