在函数中使用Unix KornShell脚本布尔来检查电话号码

时间:2014-05-07 01:25:26

标签: linux shell unix ksh

我在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
}

我收到与最后一个括号相关联的错误代码。

  1. 布尔条件可以在Unix函数中运行吗?
  2. 如何让我的功能检查用户是否输入XXX-XXX-XXXX(其中" X"是他们的电话号码)作为有效数字输入?我想阻止用户输入23435-3422 2作为号码,或输入1234567890作为号码。
  3. 我的语法是否正确?

3 个答案:

答案 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

友情提供:https://stackoverflow.com/a/5523776/45375