我正在尝试编写一个脚本,以便检查用户是否输入了有效的电话号码,然后检查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
答案 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 ]]
以及=~
来测试匹配。