shell腳本練習題

題目要求:bash

    編寫一個錄入我的信息的腳本/root/bin/information.sh,要求以下:ide

        1.提示用戶輸入username(需對名字進行字符要求檢查,用戶名中不能模糊包含系統中任何一個已在存在用戶名,如不能爲helloroot1,123bin,ggntp2等。且要求username要以大寫字母開頭,長度至少5個字符。spa

2.提示用戶輸入性別,僅能輸入male或female,輸入其餘的提示用戶重試。orm

3.提示用戶輸入生日,格式必須爲yyyy-mm-dd,並對日期的合法性進行檢查,若輸入2018-02-30等與現實不符的日期,則提示日期錯誤,請重試。it

4.提示用戶輸入手機號,長度僅能11位,且務必以13x,18x,15x,17x開頭,若錯誤則提示用戶從新輸入。io

5.提示用戶輸入×××號,長度可爲18位,格式前17位均爲數字。要求第7位至第14位所填的內容與第3步的生日符合。同時要求第17位所填的數字若爲奇數,那麼第2位所填寫的性別應爲male,反之偶數應爲female。最後1位可爲數字或x。form

6.將以上輸入的信息以:爲分隔符,保存至/root/info.txt中,每次輸入一個用戶,會向下追加一行。class

如Zhangsan:male:1999-12-20:13588291219:4101011999122030051sed



  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
相關文章
相關標籤/搜索