0

我不知道我该怎么做。我需要创建一个菜单选项,您可以在其中通过他的昵称搜索联系人,然后修改他的数据。例如:

姓名 - 尼克 - 电话 - 邮件

约翰 - 约翰尼 - 123456789 - john@test.lan

到目前为止,我拥有的是:

 add(){
    read -e -p "Name: " name
    read -e -p "Nick: " nick
    read -e -p "Phone: " phone
    read -e -p "Email: " mail
    echo $name "-" $nick "-" $phone "-" $mail >> list
    }

 mod(){
    read nick
    grep $nick list
    #Don't know how to continue this... :-/
    }

此功能也可用于搜索用户信息。所以我认为我可以将结果传递给一个临时文件,在那里进行更改,然后将信息传递给原始文件......但不确定这是否是最好的选择,如果我知道如何做到这一点。

我还需要做更多的选择:删除联系人,添加联系人和一个应该查看是否有空行的功能(删除它们),只有 NICK 的联系人(删除并保存一个 reg)。

4

1 回答 1

0

不知道如何继续... :-/

这是一个想法:

read nick
record2modify=$(grep $nick list)

name=$(echo ${record2modify}| awk -F "-" '{print $1}')
nick=$(echo ${record2modify}| awk -F "-" '{print $2}'); orignick=${nick}
phone=$(echo ${record2modify}| awk -F "-" '{print $3}')
mail=$(echo ${record2modify}| awk -F "-" '{print $4}')

selection="Z"
while [ ${selection} != "D" ]
do

clear
echo " "
echo " "
echo "What will you modify ?"
echo " "
echo "[N]ame"
echo "Nic[k]"
echo "[P]hone"
echo "[M]ail"
echo " "
echo "[D]one (upper case D only)"

read -e -p "Please make your choice" selection

case ${selection} in 
  N | n) read -e -p "New Name" name;;
  K | k) read -e -p "New Nick" nick;;
  P | p) read -e -p "New Phone" phone;;
  M | m) read -e -p "New Mail" mail;;
  
  D) echo "Finished modifying...";;
  *) clear; echo "Make a valid selection"; sleep 3;;
esac

done


sed -e "/${orignick}/d" list > list.tmp

echo ${name} "-" ${nick} "-" ${phone} "-" ${mail} >> list.tmp
mv list.tmp list
于 2013-04-28T20:17:35.907 回答