Это будет работать: если [[$ id = ~ [[: digit:]] {9}]] - Дэвид В. 11 часов назад
@ Дэвид Я попробовал это на bash, но это не сработало. - Вивин Палиат 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$
Я использую BASH 3.2.48 для Mac OS X и Bash 4.1.10 (4) для Cygwin (Wow, версия Mac , что старая?). Я не проверял это на Linux-коробке.
Какую версию вы используете? Вы удваиваете квадратные скобки вокруг :digit:
? Это должно быть [[:digit:]]
, а не [:digit:]
.
Я также понял, что мне нужны якоря ^
и $
, потому что вы не хотите совпадать с foo123456789bar
или 1234567890123456790
. Была ли у вас такая проблема?
Дело в том, что [[:digit:]]
должно сработать. Я использовал его во многих сценариях оболочки Bash, думая, что он довольно универсален. Однако, если у вас есть оболочка BASH, где она не работает, мне придется прекратить ее использовать.