Unix shell用户输入的电话号码



我正在尝试编写一个脚本,以便检查用户是否输入了有效的电话号码,然后检查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

如果您想验证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

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

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

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

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

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

请注意在开头添加了!,以否定括号中的表达式。

当计算这样的正则表达式时,我们使用双方括号[[ expression ]]=~来测试匹配。

最新更新