第一章:The Missing Code Library--2.合法化输入
2012-11-28 16:50
274 查看
合法化输入:只允许数字和字母
用户常常会忽略掉说明,并且输入错误的数据。作为一个Shell脚本开发人员,你需要拦截并纠正这些错误。
典型情况是,你或许会遇见文件名或是数据库的键。你提示用户要输入一个全部由大小写字母和数字组成的字符串,没有标点,没有特殊字符,没有空格。他们是否输入正确了?这就是这个脚本要测试的内容。
validAlphaNum.sh
脚本分析:
脚本的逻辑是很明确的。首先,它用sed将输入转换为全新的。然后,比较了新的数据和原始的。如果2个完全相同,那么非常完美。否则,转换中丢失的数据就不属于字符数字的集合,所以原始输入时非法的。
sed的特殊作用是处理不在POSIX字符类[:alnum:]中的数据。该字符类是所有大写字母、小写字母、数字的集合。如果sed处理后的数据并不匹配之前的输入,那么所有字母数字的移动揭示了这样一个问题:在输入字符串(非法的)中有非数字字母的存在,然后函数会返回一个非0值。
运行脚本:
这个脚本本身是完备的。它会提示输入,并通知你结果是否合法。这个函数的更典型的用法是放在一个脚本或者一个库的头部。会在第12个脚本中演示。
这个脚本展示了一个非常好的一般性的shell脚本编程技术:先写下一个函数,然后紧接着就测试下。完毕后,再把这个函数放到一个更大、更完备的脚本中。这样,会给你以后省下不少事。
结果:
用户常常会忽略掉说明,并且输入错误的数据。作为一个Shell脚本开发人员,你需要拦截并纠正这些错误。
典型情况是,你或许会遇见文件名或是数据库的键。你提示用户要输入一个全部由大小写字母和数字组成的字符串,没有标点,没有特殊字符,没有空格。他们是否输入正确了?这就是这个脚本要测试的内容。
validAlphaNum.sh
echo -n "输入:" read input if ! validAlphaNum "$input"; then echo "输入只能是字母和数字。" >&2 exit 1 else echo "输入合法。" fi exit 0
脚本分析:
脚本的逻辑是很明确的。首先,它用sed将输入转换为全新的。然后,比较了新的数据和原始的。如果2个完全相同,那么非常完美。否则,转换中丢失的数据就不属于字符数字的集合,所以原始输入时非法的。
sed的特殊作用是处理不在POSIX字符类[:alnum:]中的数据。该字符类是所有大写字母、小写字母、数字的集合。如果sed处理后的数据并不匹配之前的输入,那么所有字母数字的移动揭示了这样一个问题:在输入字符串(非法的)中有非数字字母的存在,然后函数会返回一个非0值。
运行脚本:
这个脚本本身是完备的。它会提示输入,并通知你结果是否合法。这个函数的更典型的用法是放在一个脚本或者一个库的头部。会在第12个脚本中演示。
这个脚本展示了一个非常好的一般性的shell脚本编程技术:先写下一个函数,然后紧接着就测试下。完毕后,再把这个函数放到一个更大、更完备的脚本中。这样,会给你以后省下不少事。
结果:
./validAlphaNum.sh 输入:valid123SAMPLE 输入合法。
./validAlphaNum.sh 输入:this is most assuredly NOT valid, 12345 输入只能是字母和数字。
相关文章推荐
- 第一章:The Missing Code Library--6.合法化浮点数输入
- 第一章:The Missing Code Library--5.合法化整型输入
- 第一章:The Missing Code Library--6.合法化浮点数输入
- 第一章:The Missing Code Library--5.合法化整型输入
- 第一章:The Missing Code Library--2.合法化输入
- 第一章:The Missing Code Library--7.合法化日期格式
- 第一章:The Missing Code Library--7.合法化日期格式
- 第一章:The Missing Code Library--12.建立一个Shell脚本库
- 第一章:The Missing Code Library--10.锁定文件
- 第一章:The Missing Code Library--11.ANSI颜色序列
- 第一章:The Missing Code Library--13.调试Shell脚本
- 第一章:The Missing Code Library--8.避免不合要求的echo方法
- 第一章:The Missing Code Library--4.优雅的表示大数
- 第一章:The Missing Code Library--9.一个任意精度浮点计算器
- 第一章:The Missing Code Library--3.正常化日期格式
- 第一章:The Missing Code Library--4.优雅的表示大数
- 第一章:The Missing Code Library--8.避免不合要求的echo方法
- 第一章:The Missing Code Library--3.正常化日期格式
- 第一章:The Missing Code Library--9.一个任意精度浮点计算器
- 第一章:The Missing Code Library--1.在系统路径PATH中寻找程序