Unix shell用户输入的电话号码

时间:2014-10-10 00:55:28

标签: bash shell unix

我正在尝试编写一个脚本,以便检查用户是否输入了有效的电话号码,然后检查records.txt文件。

我有以下代码。但是,当我输入电话号码时,它无法识别它。

我也不确定如何对文本文件进行检查?

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 :(得分: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

答案 1 :(得分:0)

将你的正则表达式放在一个变量中:pat="[0-9]{8}"

短语{8}表示重复前一个字符集8次。

在这种情况下,“前一个字符集”是[0-9]范围内的任何内容。

然后使用您创建的两个变量编写while条件:

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

注意添加!到开头,否定括号中的表达式。

在评估这样的正则表达式时,我们使用双方括号[[ expression ]]以及=~来测试匹配。