相信很多朋友写shell脚本的时候都用过read命令,但是在传参数的过程中总会避免不了输入的参数的值不正确,这时候我们只能选择结束结束脚本重新运行脚本重新输入,这样就相对麻烦很多,特别是需要输入的参数又多又长的时候,所以我们需要一个功能呢,在输入到每一个参数的时候,脚本都会做出判断,输入不正确,则重新输入。
例如我现在有这样的需求,在输入参数的时候,含有非数字字符(也就是不能有空格,控制类字符,英文字符等),脚本如下:
#/bin/bash
while true;do
# 输入
read -p "请输入:" str
check_str=`echo ${str} | sed -r 's/[[:digit:]]+//'` #删除变量值中的数字之后赋值新变量,再检查新变量是否为空
if [ ! -z "${check_str}" ];then
echo -e "\033[1;31m输入有误,请重新输入: \033[0m"
else
break
fi
done