2014-10-10 4 views
0

Я пытаюсь написать сценарий, чтобы он проверял, ввел ли пользователь действительный номер телефона, а затем проверяет файл records.txt.Unix shell номер телефона пользователя

У меня есть следующий код. Однако, когда я ввожу номер телефона, он не распознает его.

Я также не уверен, как реализовать проверку против текстового файла?

echo "Enter a phone number as XXXXXXXX: " 
read phoneNumber 
while [ "$phoneNumber" != [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ] 
    do 
    echo "Please enter a phone number as XXXXXXXX: " 
    read phoneNumber 
done 
echo $$phoneNumber 
pause 
+2

У вас есть восьмизначные номера телефонов? –

+0

Да, мы делаем. После ввода номера телефона он говорит: «Пожалуйста, введите номер телефона как XXXXXXXX:» цикл while. Он не распознает восемь цифр как действительную запись. @ElliottFrisch – Seb

+0

Какова ваша линия shebang и вы на debian или ubuntu? –

ответ

0

Поместите регулярное выражение в переменной следующим образом: pat="[0-9]{8}".

Фраза {8} означает 8 повторений предыдущего набора символов.

В этом случае «предыдущий набор символов» находится в диапазоне [0-9].

Затем написать while состояние с помощью двух переменных, которые вы создали:

while [[ ! $phoneNumber =~ $pat ]] 

Обратите внимание на добавленную ! к началу, чтобы свести на нет выражение в скобках.

При оценке регулярных выражений, подобных этому, мы используем двойные квадратные скобки [[ expression ]], а также =~ для проверки соответствия.

+0

После добавления, что я получаю следующую ошибку. ./testing.sh: 6: ./testing.sh: [[: не найдено @Travis – Seb

+1

О, я вижу, вы не используете bash. Используйте '/ bin/bash', и мой код должен работать :) – Travis

3

Вам необходимо включить стартовые и конечные якоря в ваше регулярное выражение, если вы хотите проверить номера телефонов ровно на 8 цифр или иначе, они будут принимать номера, содержащие более 8 цифр.

#!/bin/bash 
echo "Enter a phone number as XXXXXXXX: " 
read phoneNumber 
pat="^[0-9]{8}$" 
while [[ ! $phoneNumber =~ $pat ]] 
    do 
    echo "Please enter a phone number as XXXXXXXX: " 
    read phoneNumber 
done 
echo $phoneNumber 
Смежные вопросы