塘厦镇网站建设公司,网站排序,动态图片制作,电子商务网站创建过程合法化输入#xff1a;只允许数字和字母 用户常常会忽略掉说明#xff0c;并且输入错误的数据。作为一个Shell脚本开发人员#xff0c;你需要拦截并纠正这些错误。 典型情况是#xff0c;你或许会遇见文件名或是数据库的键。你提示用户要输入一个全部由大小写字母和数字…合法化输入只允许数字和字母 用户常常会忽略掉说明并且输入错误的数据。作为一个Shell脚本开发人员你需要拦截并纠正这些错误。 典型情况是你或许会遇见文件名或是数据库的键。你提示用户要输入一个全部由大小写字母和数字组成的字符串没有标点没有特殊字符没有空格。他们是否输入正确了这就是这个脚本要测试的内容。 validAlphaNum.sh 1 # validAlphaNum.sh - 确保输入只由数字、字母构成2 3 #!/bin/sh4 5 validAlphaNum()6 {7 # 合法化参数都是大写字母小写字母数字返回0否则返回18 9 # 删除所有不可接受的字符
10 compressed$(echo $1 | sed -e s/[^[:alnum:]]//g)
11
12 if [ $compressed ! $input ]; then
13 return 1
14 else
15 return 0
16 fi
17 } 该函数的示例用法。下面的代码直接添加到validAlphaNum.sh中 validAlphaNum.sh 1 echo -n 输入2 read input3 4 if ! validAlphaNum $input; then5 echo 输入只能是字母和数字。 26 exit 17 else8 echo 输入合法。9 fi
10
11 exit 0 脚本分析 脚本的逻辑是很明确的。首先它用sed将输入转换为全新的。然后比较了新的数据和原始的。如果2个完全相同那么非常完美。否则转换中丢失的数据就不属于字符数字的集合所以原始输入时非法的。 sed的特殊作用是处理不在POSIX字符类[:alnum:]中的数据。该字符类是所有大写字母、小写字母、数字的集合。如果sed处理后的数据并不匹配之前的输入那么所有字母数字的移动揭示了这样一个问题在输入字符串(非法的)中有非数字字母的存在然后函数会返回一个非0值。 运行脚本 这个脚本本身是完备的。它会提示输入并通知你结果是否合法。这个函数的更典型的用法是放在一个脚本或者一个库的头部。会在第12个脚本中演示。 这个脚本展示了一个非常好的一般性的shell脚本编程技术先写下一个函数然后紧接着就测试下。完毕后再把这个函数放到一个更大、更完备的脚本中。这样会给你以后省下不少事。 结果 ./validAlphaNum.sh
输入valid123SAMPLE
输入合法。 ./validAlphaNum.sh
输入this is most assuredly NOT valid, 12345
输入只能是字母和数字。 转载于:https://www.cnblogs.com/lalala23456/archive/2012/11/28/2792959.html