これは機能します: if [[ $id =~ [[:digit:]]{9} ]] – David W. 11時間前
@David bashで試してみましたが、うまくいかなかったようです。– Vivin Paliath 10時間前
テストプログラムを書きました:
#! /bin/bash
for id in 123456789 12345689 1234567890 987654321
do
if [[ $id =~ ^[[:digit:]]{9}$ ]]
then
echo "$id is 9 digits long"
else
echo "$id is bad"
fi
done
そして、次の出力を得ました。
DaveBook:~ david$ ./test.sh
123456789 is 9 digits long
12345689 is bad
1234567890 is bad
987654321 is 9 digits long
DaveBook:~ david$
Mac OS X には BASH 3.2.48 を使用し、Cygwin には Bash 4.1.10(4) を使用しています (うわー、Mac バージョンはそんなに古いのですか?)。Linuxボックスでこれをテストしていません。
どのバージョンを使用していますか? 角括弧を二重にしています:digit:
か?である必要が[[:digit:]]
あり[:digit:]
ます。
また、 orに一致させたくないので、そこに^
andアンカーが必要であることにも気付きました。これはあなたが抱えていた問題でしたか?$
foo123456789bar
1234567890123456790
[[:digit:]]
問題は、それが機能するはずだったということです。私はそれがかなり普遍的であると考えて、多くの Bash シェル スクリプトでそれを使用しました。ただし、BASH シェルが機能しない場合は、使用を中止する必要があります。