Unix script 17 - examples

本文介绍了一个使用Bourne或Bourne-Again Shell创建地址簿程序的练习,并提供了一个文件系统遍历脚本的示例。该地址簿程序包含搜索、添加、编辑和删除条目的功能。

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

Just a quick exercise I think might be useful in working out how good you are at shell scripting...

Addressbook

Okay, it's boring, but here's your exercise for today:
Create an addressbook program using the bourne or bourne-again shell.
It should use functions to perform the required tasks.It should be menu-based, allowing you the options of:

  • Search address book
  • Add entries
  • Remove / edit entries

You will also need a "display" function to display a record or records when selected.

Search

When the user searches for "Smith", the script should identify and display all "Smith" records.It is up to you whether this search is in Surname only, or in the entire record.

Add

Input the data (Name, Surname, Email, Phone, etc).
If it appears to be a duplicate, for bonus points offer to edit the existing record.
Save the record into the data file when the user confirms.

Remove

Enter search criteria, narrow it down to one, confirm, then remove that record.

Edit

As remove, but use the existing record for default entries.
For example, if you change the phone number, the session may look like this, if you only want tochange John Smith's Phone Number:
          Name [ John Smith ]
          Phone [ 12345 ] 54321
          Email [ joe@smith.org.uk ]
Remove the old record, and add the new one. Alternatively, edit the existing record, though thismay be more difficult.

Bonus Points

  • Allow for cancel options (use "special" entries (^d, CR, ^c, etc))
  • Add "Confirm" option.
  • Offer interactive / non-interactive modes. (ie, a menu-based version and a command-line (CLI)-based option.
  • Play with getopt for CLI version.

Hints / Things to think about

  • Suggested record format: Use colons to separate fields.
    John Smith: 54321:john@smith.example.com
  • That way you can use "cut -d:" to read fields.
  • Think about using IFS as an alternative to this method.
  • Think about using space (" ") to separate fields, and convert any spaces in the input to underscores ("_")then convert them back again for display.

One answer I came up with is below; don't read unless you're stuck!
main file
library file

Directory Traversal

Create a shell script to traverse through a filesystem tree.


Example answers here:

example
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值