当编写shell脚本时,总是不可避免的要与外界进行交互。
通过 read -p "请输入:" input 指令,可以实现由键盘到脚本的交互。
但是由输入法进行输入的时候,不可避免会产生一些特殊字符,如果一起输入脚本,会造成脚本的不稳定,因此需要对从键盘输入
的字符进行校验。
path=`pwd` while true do echo " 请从键盘输入名称" echo " 名称只能由中文、英文、数字组成" read -p " name: " name if [ -e ${path}/name.txt ]; then rm -rf ${path}/name.txt fi echo "$name" >> ${path2}/name.txt # 通过perl 去除中文 perl -pi -e 's/[x80-xff]//g' ${path}/name.txt # 通过sed 去除英文和数字 filter_input=`cat ${path}/name.txt | sed 's/[0-9a-zA-Z]//g'` if [ ! -z $filter_input ]; then echo " 您输入的name: $name 不符合格式要求,请重新输入" else break fi done
尝试通过sed识别中文失败后,通过perl 来识别中文。
perl中汉字采用gbk编码,可以正常进行识别。