文档详情

shell脚本教程详细(很好).ppt

发布:2019-12-26约2.07万字共82页下载文档
文本预览下载声明
* 六 脚本实例 编写一个名为iffile程序,它执行时判断/bin目录下date文件是否存在? 编写一个名为greet的问候程序,它执行时能根据系统当前的时间向用户输出问候信息。设从半夜到中午为早晨,中午到下午六点为下午,下午六点到半夜为晚上。 编写一个名为ifuser的程序,它执行时带用户名作为命令行参数,判断该用户是否已经在系统中登录,并给出相关信息。 编写一个名为menu的程序,实现简单的弹出式菜单功能,用户能根据显示的菜单项从键盘选择执行对应的命令。 编写一个名为chname的程序,将当前目录下所有的.txt文件更名为.doc文件。 编写一个名为chuser的程序,执行中每隔5分钟检查指定的用户是否登录系统,用户名从命令行输入;如果指定的用户已经登录,则显示相关信息。 * #! /bin/sh - fname=/bin/date if (test –f “$fname”) then echo “exist” fi 说明: 在shell程序中经常需要判断所处理的文件是否存在。本程序采用if语句的简单格式测试date文件,如果存在,则显示相关信息,否则退出if语句。 ①判断/bin目录下date文件是否存在 * #! /bin/sh - hour=`date|cut –c 10-11` if test “$hour” –ge 0 –a “$hour” –le 11; then echo “Good morning!” elif test “$hour” –ge 12 –a “$hour” –le 17; then echo “Good afternoon!” else echo “Good evening!” fi 说明: 第一个有效语句是将命令执行的结果赋给hour变量,所以用反向单引号。 用cut命令从date命令的输出中切割出“小时”信息;这里-c 10-11选项表示只切割10到11列。 这个程序使用了if连用格式,也可以使用if完整格式的嵌套形式。 ②根据系统当前的时间向用户输出问候信息 * #! /bin/sh - if test $# -ne 1 then echo Incorrect number of arguments echo Usage: ifuser username else user=$1 if who | grep –q $user ; then echo $1 user is logged on. exit 0 else echo $1 user is not logged on. exit 1 fi fi ③判断用户是否已经在系统中登录 * 说明: (1)由于who | grep $user不是表达式而是命令组合,所以不需要test语句测试;如果命令组合执行成功,即找到指定的用户名则返回码为0;否则为非0。 (2)在这个程序中使用了grep字符串搜索命令和“|”管道命令 (3)用grep 命令–q选项来禁止显示搜索到的信息。 (4)还使用了exit命令,以终止shell程序的执行。exit 0表示程序终止后返回0值,而exit 1表示程序终止后返回非0的值。 * ④简单的菜单功能 #! /bin/sh - clear echo MENU echo echo 1.Find files modified in last 24 hours echo 2.The free disk space echo 3.Space consumed by this user echo 4.Exit echo echo -n Select: read choice case $choice in 1)find $HOME -mtime -1 -print;; 2)df;; 3)du -s $HOME;; 4)exit;; *)echo Invalid option esac * 说明: (1)本程序菜单的第一项是显示/home目录下,最近24小时内所有修改过的文件。命令中的-1参数是数字“1”,表示一天(24小时)。第二项是检查磁盘空间。第三项是显示/home目录下文件的大小,命令中的-s选项是为了仅显示总计。第四项是退出程序。 (2)为了使程序美观,用echo –n实现输入的选择数字不换行。 (3)输入的数字不在1-4范围内时,显示无效的选项信息。 * #! /bin/sh - for file in *.txt do leftname=`basename $file .txt` mv $file
显示全部
相似文档