我在Unix中编写了这个脚本:
function addinfo {
echo "Please enter your LAST Name: "
read last
echo "Please enter your FIRST Name: "
read first
echo "Please enter your PHONE number as XXX-XXX-XXXX: "
read phone
if [ $phone != ???-???-??? ]; then
echo "Please only enter your as XXX-XXX-XXXX"
read phone
else
echo $last + $first + $phone >> asg7phonebook
if
}
我收到与最后一个括号相关联的错误代码。
XXX-XXX-XXXX
(其中" X"是他们的电话号码)作为有效数字输入?我想阻止用户输入23435-3422
2作为号码,或输入1234567890作为号码。 答案 0 :(得分:4)
我发现您的方法存在一些问题,
#!/usr/bin/env ksh
addinfo() {
echo "Please enter your LAST Name: "
read last
echo "Please enter your FIRST Name: "
read first
echo "Please enter your PHONE number as XXX-XXX-XXXX: "
read phone
# Using a while loop on the correct pattern check.
while [[ "$phone" != [0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] ]]
do
echo "Please enter your PHONE number as XXX-XXX-XXXX (only): "
read phone
done
echo $last + $first + $phone >> asg7phonebook
}
addinfo
答案 1 :(得分:0)
#!/bin/bash
function addinfo() {
echo "Please enter your LAST Name: "
read last
echo "Please enter your FIRST Name: "
read first
echo "Please enter your PHONE number as XXX-XXX-XXXX: "
read phone
if [[ $phone =~ ^[0-9]{3}-[0-9]{3}-[0-9]{4}$ ]]; then
echo $last:$first:$phone >> asg7phonebook
else
echo "Please only enter your as XXX-XXX-XXXX"
fi
}
addinfo
答案 2 :(得分:0)
@Elliott Frisch的答案是一个有效的解决方案,但只是为了使用{{1>}的扩展模式来显示更简单的匹配选项:
ksh 93