shell电话本.docx
- 文档编号:3730231
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:15
- 大小:17.17KB
shell电话本.docx
《shell电话本.docx》由会员分享,可在线阅读,更多相关《shell电话本.docx(15页珍藏版)》请在冰豆网上搜索。
shell电话本
#!
/bin/bash
#
#dis:
aphonebook
#na:
phonebok.sh
ex_menu(){
clear
echo
echo"==================================================================="
echo"GoodBye!
"
echo"==================================================================="
exit0
}
#
#
print_all(){
if["$1"='f']
then
awk-F':
''BEGIN{split("name:
num:
nicename:
work:
phone_num:
local_num:
birthday:
e-mail:
qq/msn:
address:
remarks",arry,":
")}
{for(i=1;i<=NF;i++){
if($i!
=""){
printarry[i]":
"$i"\n"
}
}
print"\n"
system("sleep1")
}'./phone.bak
else
cat./phone.bak
fi
}
print_name(){
if["$1"='f']
then
awk-F':
''{print"name:
"$1;if($5!
=""){print"Phone:
"$5"\n"}else{print"PhoneisNull\n"}}'./phone.bak
else
cut-d':
'-f1,5./phone.bak
fi
}
add_rec(){
read-p"Name:
"name
if["$name"="qqq"]
then
return0
fi
read-p"Nicename:
"nicename
read-p"Work:
"work
get_pho_num(){
read-p"Phone_number:
"phone_num
if[[${#phone_num}!
=11]]
then
echo"Wrongphonenumber,tryagin"
get_pho_num
else
echo$phone_num
echo"$phone_num"|grep-E"[[:
punct:
]]|[[:
alpha:
]]"
if[[$?
=0]]
then
echo"Thenumberiswrong,tryagin"
get_pho_num
else
cut-d':
'-f5./phone.bak|grep"$phone_num"
if[[$?
=0]]
then
echo"Thenumberhasextesed,tryagin"
get_pho_num
else
return0
fi
fi
fi
}
get_pho_num
get_loc_num(){
read-p"Locale_nmber:
"local_num
if[[${#local_num}<7]]
then
echo"Wrongphonenumber,tryagin"
get_loc_num
fi
`echo"$local_num"|grep-E"[[:
punct:
]]|[[:
alpha:
]]"`&&echo"Thenumberiswrong,tryagin"&&get_loc_num
}
get_loc_num
get_bir(){
read-p"BirthdayYYYY-MM-DD:
"birthday
if(date-d"$birthday"+"%Y-%m-%d")
then
birthday=`date-d"$birthday"+"%Y-%m-%d"`
return0
else
echo"Thebirthdayiswrong,tryagin"
get_bir
fi
}
get_bir
get_mail(){
read-p"E-mail:
"mail_a
if(echo"$mail_a"|grep-E".+@.+\.com")
then
return0
else
echo"TheE-mailiswrong,tryagin"
get_mail
fi
}
get_mail
get_qq(){
read-p"QQ/MSN:
if[["${#qq}"<5]]
then
echo"TheQQ/MSNiswrong,tryagin"
get_qq
else
return0
fi
}
get_qq
read-p"Address:
"address
read-p"Remarks:
"remarks
lastnum=`cut-d':
'-f2phone.bak|sort-n|tail-1`
letnumber=${lastnum:
=0}+1
echo"$name:
$number:
$nicename:
$work:
$phone_num:
$local_num:
$birthday:
$mail_a:
$qq:
$address:
$remarks">>./phone.bak
}
first_menu(){
cat< =========================FirstUserMenu=========================== 1)AddNewRecords R)GoMainMenuAfterAdd Q)Quit =================================================================== EOF2 while: do echo read-n1-p"MainMenu1|Rr|Qq"menu2 echo case"$menu2"in 1)add_rec ;; R|r)return ;; Q|q)exit ;; #*)echo"Badchoice" #;; esac done } # # # search_spe(){ echo key_word="$2" echo$key_word case$1in name) cut-d': '-f1./phone.bak|grep$key_word|grep-f-./phone.bak ;; number) cut-d': '-f5./phone.bak|grep$key_word|grep-f-./phone.bak ;; qq) cut-d': '-f9./phone.bak|grep$key_word|grep-f-./phone.bak ;; all) grep$key_word./phone.bak ;; esac return0 } # # # # search_menu(){ while: do echo echo"=============================SearchMenu=============================" echo"1)SearchByName" echo"2)SearchByPhoneNumber" echo"3)SearchByQQ/MSN" echo"4)SearchInAll" echo"R)RetrunToMainMenu" echo"====================================================================" echo echo read-n1-p"SearchMenu1-4|Rr#"sear if["$sear"="r"-o"$sear"="R"] then return fi echo read-p"Enteryourkeyword: "word echo case"$sear"in 1)search_spename$word ;; 2)search_spenumber$word ;; 3)search_speqq$word ;; 4)search_speall$word ;; R|r)return0 ;; #*)echo"Badchoice" #;; esac done } del_rec(){ echo read-p"EnterThenameyouwantdelete": dn ["$dn"="qqq"]&&return0 echo sed-n'/^'"$dn"': /p'./phone.bak read-n1-p"Therecordyoutrytodelete...y|n|q"re echo if["$re"='y'] then sed-i'/^'"$dn"': /d'./phone.bak elif["$re"='n'] then del_rec else return0 fi } del_menu(){ while: do echo echo"=============================DelMenu===============================" echo"1)DeleteByName" echo"2)DeleteAllRecord" echo"R)RetrunToMainMenu" echo"=====================================================================" echo echo read-n1-p"DelMenu1-2|Rr#"del echo case"$del"in 1)del_rec ;; 2)read-n1-p"AreYouSurey|n"sure if["$sure"='y'] then rm-rf./phone.bak touch./phone.bak else del_menu fi ;; R|r)return0 ;; #*)echo"Badchoice" esac done } mod_rec(){ echo read-p"EnterThenameyoutrytomodify: "mod_name echo awk'BEGIN{FS=": ";split("name: num: nicename: work: phone_num: local_num: birthday: e-mail: qq/msn: address: remarks",arry,": ")} { if($1=="'$mod_name'") { for(i=1;i<=NF;i++) { if(i==2) { continue } printfarry[i]": "$i"\t\t\tNew"arry[i]": "; getlinearry_new[i]<"-"; if(arry_new[i]=="") { arry_new[i]=$i; } if(i==5) {print"thisis: "arry_new[5]; if(length(arry_new[5])! =11||arry_new[5]~/[a-z]/||arry_new[5]~/[[: punct: ]]/) { print"Thenumberiswrongtryagin"; i--; } } if(i==6) { if(length(arry_new[6])<7||arry_new[6]~/[a-z]/||arry_new[6]~/[[: punct: ]]/) { print"Thenumberiswrong,tryagin"; i--; } } if(i==7) { if(arry_new[7]! ~/^[12][09][0-9][0-9]-[01][0-9]-[123][0-9]$/) { print"Thedayiswrong,tryagin" i--; } } if(i==8) { if(arry_new[8]! ~/.+@.+\.com$/) { print"TheE-mailiswrong,tryagin" i--; } } } arry_new[2]=$2; print"\n"; system("sleep3"); } else { if(NR==1) print"Makesurethenameisright."; else print"Modifycomplet" } }END{for(j=1;j<=11;j++) { if(j! =11) { printfarry_new[j]": ">"./.phonebook_awk.bak" } if(j==11) { printfarry_new[j]"\n">"./.phonebook_awk.bak" } } }'./phone.bak line_num=`cut-d': '-f2./.phonebook_awk.bak` echo"line_numis: "$line_num sed-i'/.*: '"$line_num"': .*/d'./phone.bak cat./.phonebook_awk.bak>>./phone.bak rm./.phonebook_awk.bak-rf } # # # bak_mail(){ read-p"E-mail: "mail_add if(echo"$mail_add"|grep-E".+@.+\.com") then mail-s"phone.bat""$mail_add"<./phone.bak>/dev/null2>&1 return0 else echo"ThenE-mailiswrong,Nowsendthemailwithdefaultmail_address" mail-s"phone.bat""395423101@"<./phone.bak>/dev/null2>&1 return0 fi return0 } # # # # main(){ test-f./phone.bak||touch./phone.bak cp./phone.bak./.phone.bat test-s./phone.bak||first_menu cat< =============================MainMenu============================= 1)PrintAllCurrentRecords 2)PrintAllCurrentRecords(formatted) 3)PrintNamesandPhoneNumbers 4)PrintNamesandPhoneNumbers(formatted) 5)SearchforspecificRecord(s) 6)AddNewRecords 7)DeleteRecords 8)ModifyRecords 9)BackuptoMail R)ReflashScreen Q)Quit ==================================================================== EOF5 while: do echo read-n1-p"MainMenu0-9|Rr|Qq#"menu echo case"$menu"in 1)print_all ;; 2)print_allf ;; 3)print_name ;; 4)print_namef ;; 5)search_menu ;; 6)add_rec ;; 7)del_menu ;; 8)mod_rec ;; 9)bak_mail ;; Q|q)ex_menu ;; R|r)clear main ;; #*)echo"Badchoice" #;; esac done rm-rf./.phone.bat } passwordaaa(){ if(grep-E"^password$"./phonebook.sh) then read-p"Enterserailnumber: "numb if["$numb"="1234512345"] then sed-i's/^passwordaaa$/#&/'./phonebook.sh return0 else passwordaaa fi else return0 fi } passwordaaa main
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- shell 电话本