编写一个录入个人信息的脚本/root/bin/information.sh,要求如下:
1.提示用户输入username(需对名字进行字符要求检查,用户名中不能模糊包含系统中任何一个已在存在用户名,如不能为helloroot1,123bin,ggntp2等。且要求username要以大写字母开头,长度至少5个字符。
2.提示用户输入性别,仅能输入male或female,输入其他的提示用户重试。
3.提示用户输入生日,格式必须为yyyy-mm-dd,并对日期的合法性进行检查,若输入2018-02-30等与现实不符的日期,则提示日期错误,请重试。
4.提示用户输入手机号,长度仅能11位,且务必以13x,18x,15x,17x开头,若错误则提示用户重新输入。
5.提示用户输入身份证号,长度可为18位,格式前17位均为数字。要求第7位至第14位所填的内容与第3步的生日符合。同时要求第17位所填的数字若为奇数,那么第2位所填写的性别应为male,反之偶数应为female。最后1位可为数字或x。
6.将以上输入的信息以:为分隔符,保存至/root/info.txt中,每次输入一个用户,会向下追加一行。
如Zhangsan:male:1999-12-20:13588291219:4101011999122030051
1 #!/bin/bash
2 read -p "请输入username: " username
3 #提示用户输入username(需对名字进行字符要求检查,用户名中不能模糊包含系统中任何一个已在存在
4 #要求username要以大写字母开头,长度至少5个字符
5 cat /etc/passwd |cut -d: -f1 > /root/passwd
6 while read line
7 do
8 if [[ $username != *${line}* ]] && [[ $username == [[:upper:]]????* ]] ;then
9 continue
12 exit 1
13 fi
14 done < /root/passwd
15
16 #提示用户输入性别,仅能输入male或female,输入其他的提示用户重试
17 while read -p "请输入性别: " gender
18 do
19 if [ $gender == male ] || [ $gender == female ] ;then
20 break
21 else
22 echo "请重试"
23 continue
24 fi
25 done
26
27 #提示用户输入生日,格式必须为yyyy-mm-dd,并对日期的合法性进行检查,若输入2018-02-30等与现实不符的日期,
28 #则提示日期错误,请重试
29 while read -p "请输入生日(yyyy-mm-dd): " birthday
30 do
31 if [[ $birthday == [1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] ]] && [[ $birthday < `date +%F` ]]
&& cal $(echo $birthday |sed -r 's/(.*)-(.*)-(.*)/\3 \2 \1/') &> /dev/null ;then
32 break
33 else
34 echo "日期错误,请重新输入"
35 continue
36 fi
37 done
38
39 #提示用户输入手机号,长度仅能11位,且务必以13x,18x,15x,17x开头,若错误则提示用户重新输入
40 while read -p "请输入手机号: " telnum
41 do
42 if [[ $telnum == 1[3578]x[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]] ;then
43 break
44 else
45 echo "请重新输入"
46 continue
47 fi
48 done
49
50 #提示用户输入身份证号,长度可为18位,格式前17位均为数字。要求第7位至第14位所填的内容与第3步的生日符合。同时要求第17位
51 #所填的数字若为奇数,那么第2步所填写的性别应为male,反之偶数应为female。最后1位可为数字或x
52 read -p "请输入身份证号: " ID
53 case $gender in
54 male)
55 if [[ $ID == [0-9][0-9][0-9][0-9][0-9][0-9]`echo $birthday |tr -d "-"`[0-9][0-9][13579][0-9x] ]] ;then
56 echo "输入正确"
57 else
58 echo "输入的身份证号不正确"
59 exit 3
60 fi
61 ;;
62 female)
63 if [[ $ID == [0-9][0-9][0-9][0-9][0-9][0-9]`echo $birthday |tr -d "-"`[0-9][0-9][02468][0-9x] ]] ;then
64 echo "输入正确"
65 else
66 echo "输入的身份证号不正确"
67 exit 3
68 fi
69 ;;
70 *)
71 echo "性别不符"
72 exit 4
73 ;;
74 esac
75
76 #将以上输入的信息以:为分隔符,保存至/root/info.txt中,每次输入一个用户,会向下追加一行
77 cat << EOF >> /root/info.txt
78 $username:$gender:$birthday:$telnum:$ID
79 EOF
80 rm -f /root/passwd原文地址:http://blog.51cto.com/13570193/2073349