shell-010: APP: phone number

本文介绍了一个使用Shell脚本实现的电话簿管理系统。该系统具备添加、查找、删除、更新联系人信息及显示所有条目的功能,并能记录条目总数。通过简单的命令行交互,用户可以轻松管理自己的联系人列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cnencaoj7mbp1:shell caoj7$ cat phone.cdb 
zhangsan 18899999999
cnencaoj7mbp1:shell caoj7$ cat phone.sh
#!/bin/bash

phone_book="phone.cdb"
menu_choice=""
tmp_file=tmp.$$
trap 'rm -f $phone_book' INT 

if [ ! -f "$phone_book" ]; then
    touch $phone_book
fi

if [ ! -f "$tmp_file" ]; then
    touch $tmp_file
fi

#display menu
menu(){
    sleep 1
    echo "=================================="
    echo "i) insert an entry"
    echo "s) search the phone number or owner"
    echo "d) delete an entry"
    echo "u) update an entry"
    echo "l) list all entries"
    echo "n) number of entries"
    echo "q) quit"
    echo -n "Please choose your Options: "
    read menu_choice
    return
}

#insert an entry
insert() {
    echo -n "please input your friend's name and his phone number : "
    read entry
    echo  $entry >> $phone_book
}

#list all entries
list(){
    clear
    more $phone_book
}

#search by the phone number | owner
search(){
    echo -n "input the owner name | phone number : "
    read input
                    #echo $(grep $friend_name $phone_book)    #echo `grep $friend_name $phone_book`
    entry=$(grep $input $phone_book)
    if [ "$entry" = "" ]; then
	echo "no this entry...."
    else
    	set $entry
   	if [ "$input" = "$1" ]; then
    	     echo "phone number is: $2"
        else
   	     echo "owner's name is: $1"
  	fi
    fi
}

#get number of entries
getNumber(){
   set $(wc -l $phone_book)
   number_of_entries=$1
   echo "total number of entries = $number_of_entries"
}

#delete an entry according the owner's name | phone No.
delete(){
    echo -n "which entry to delete, the owner name | phone number : "
    read input
    entry=$(grep $input $phone_book)
    if [ "$entry" = "" ]; then
	echo "no such entry...."
    else
	grep -v $input $phone_book > $tmp_file
        mv $tmp_file $phone_book
    fi
}

#update the phone No. by the owner's name
update(){
    echo -n "input the person's name who you want to update: "
    read name
    entry=$(grep $name $phone_book)
    if [ "$entry" = "" ]; then
	echo "no such entry..."
    else
	grep -v $name $phone_book > $tmp_file
	mv $tmp_file $phone_book
    	echo -n "please input his/her new phone number :"
	read new_phone_number
       	echo "$name $new_phone_number" >> $phone_book
    fi
}
#==================================
menu
while [ $menu_choice != "q" ]
do
    case "$menu_choice" in
    	i) insert;;
   	s) search;;
    	d) delete;;
 	u) update;;
  	l) list;;
        n) getNumber;;
	*) echo "wrong input";;    
    esac
    menu
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值