shell 脚本对从键盘输入的字符进行校验

当编写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编码,可以正常进行识别。

posted @ 2021-03-08 17:01  wangssd  阅读(609)  评论(0编辑  收藏  举报