热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

读书笔记之101个脚本之No.4

今天的案例是将对用户输入的判断的TheCode#!/bin/sh#validint--Validatesintegerinput,allowingnegativeintstoo.functionvalidint{#Validatefirstfield.Thentestagainst...

 

 

今天的案例是将 对用户输入的判断的

The Code

#!/bin/sh

# validint -- Validates integer input, allowing negative ints too.

 

function validint

{

  # Validate first field. Then test against min value $2 and/or

  # max value $3 if they are supplied. If they are not supplied, skip these tests.

 

  number="$1";      min="$2";      max="$3"

 

  if [ -z $number ] ; then

    echo "You didn't enter anything. Unacceptable." >&2 ; return 1

  fi

 

  if [ "${number%${number#?}}" = "-" ] ; then  # is first char a '-' sign?

testvalue="${number#?}"     # all but first character

  else

    testvalue="$number"

  fi

 

  nodigits="$(echo $testvalue | sed 's/[[:digit:]]//g')"

 

  if [ ! -z $nodigits ] ; then

    echo "Invalid number format! Only digits, no commas, spaces, etc." >&2

    return 1

  fi

 

  if [ ! -z $min ] ; then

    if [ "$number" -lt "$min" ] ; then

       echo "Your value is too small: smallest acceptable value is $min" >&2

       return 1

    fi

  fi

  if [ ! -z $max ] ; then

     if [ "$number" -gt "$max" ] ; then

       echo "Your value is too big: largest acceptable value is $max" >&2

       return 1

     fi

  fi

  return 0

}

 

 

if validint "$1" "$2" "$3" ; then

  echo "That input is a valid integer value within your constraints"

fi

 

 

 

解析脚本:

1)number="$1";  min="$2"; max="$3"  指用户的3个输入;

2)nodigits="$(echo $testvalue | sed 's/[[:digit:]]//g')" 为后面测试用户输入的是否全为数字做准备

3)if validint "$1" "$2" "$3" ; then  注意"$1" "$2" "$3"要加引号。

4)testvalue变量是为了过滤负数后测试输入是否全为数字的。

5)感觉想得挺周全的。

 

 

 

 

本文出自 “你就当我是浮夸吧” 博客


推荐阅读
author-avatar
江西花而美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有