标签:shell
第一题:#!/bin/bash
flag=1
while true;do
read -p "请输入用户名 " username
if $(echo "$username" |egrep '^[[:upper:]].{4,}' &> /dev/null) ;then
true
else
echo "请输入首字母大写的高于5位的字符"
continue
fi
for n in `cat /etc/passwd |cut -d: -f1`;do
echo $username| grep $n &> /dev/null
if [ $? -eq 0 ];then
flag=0
break
fi
done
if [ $flag -eq 0 ];then
echo 包含敏感字符
exit 1
else
break
fi
done
#------------------------------------------------------------------------------------------------------------
while true;do
read -p "请输入性别(male,female) " sex
case $sex in
male|female)break;;
*)echo 输错了;continue ;;
esac
done
#---------------------------------------------------------------------
while true;do
read -p "输入生日 " bir
echo $bir|egrep '[[:digit:]]{4}(-[[:digit:]]{1,2}){2}' &> /dev/null
if [ $? -eq 0 ] ;then
biry=$(echo $bir|cut -d- -f1)
birm=$(echo $bir|cut -d- -f2)
bird=$(echo $bir|cut -d- -f3)
if $(cal $bird $birm $biry &> /dev/null) ;then
break
else
echo "不合法"
continue
fi
else
echo 格式不合法
continue
fi
done
#------------------------------------------------------------------------------
while true ;do
read -p "请输入手机号 " num
echo $num |egrep '\<1[3857][[:digit:]]{9}\>' &> /dev/null
if [ $? -eq 0 ];then
break
else
echo "格式不对"
continue
fi
done
#---------------------------------------------------------------------------------
while true ;do
read -p "请输入身份证号 " id
echo $id |egrep '[[:digit:]]{17}[[:digit:]x]' &> /dev/null
if [ $? -eq 0 ];then
biry1=`echo $id |cut -c 7-10`
birm1=`echo $id |cut -c 11-12`
bird1=`echo $id |cut -c 13-14`
if [ $(echo -n $birm|wc -m) -eq 1 ];then
birm=0$birm
fi
if [ $(echo -n $bird|wc -m) -eq 1 ];then
birm=0$bird
fi
if [ "$biry$birm$bird" == $biry1$birm1$bird1 ];then
shu=$[$(echo $id|cut -c 17)%2]
case $shu in
1)xingbie=male
if [ "$xingbie" != "$sex" ];then
echo "性别错了"
continue
else
break
fi;;
*)xingbie=female
if [ "$xingbie" != "$sex" ];then
echo "性别错了"
continue
else
break
fi;;
esac
else
echo "日期不符"
continue
fi
else
echo 格式不对
continue
fi
done
#----------------------------
echo "$username:$sex:$bir:$num:$id">>/app/info.txt
第七题:
利用第六题的脚本,输入20个用户信息。
编写一个抽奖系统的脚本 ,可对/root/info.txt文件中的手机号进行随机抽奖,将中奖的手机号打印出来,要求第4-7位显示为*,即135****1219
答案:
numlist=$(cat -n /app/jobs_20180213_jiaqi/info.txt |wc -l)
randnum=$(echo $[$RANDOM%$numlist+1]) #标记行号是从1开始的,所以随机求余数范围最小是1,最大是numlist -> numli
st-1
sed -n "${randnum}p" /app/jobs_20180213_jiaqi/info.txt |cut -d: -f4 |sed -r "s/\<([[:digit:]]{3}).*([[:digit:
]]{4})\>/\1****\2/"
标签:shell
原文地址:http://blog.51cto.com/13560258/2073507