shell电话本.docx

上传人:b****6 文档编号:3730231 上传时间:2022-11-25 格式:DOCX 页数:15 大小:17.17KB
下载 相关 举报
shell电话本.docx_第1页
第1页 / 共15页
shell电话本.docx_第2页
第2页 / 共15页
shell电话本.docx_第3页
第3页 / 共15页
shell电话本.docx_第4页
第4页 / 共15页
shell电话本.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

shell电话本.docx

《shell电话本.docx》由会员分享,可在线阅读,更多相关《shell电话本.docx(15页珍藏版)》请在冰豆网上搜索。

shell电话本.docx

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:

"qq

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1