- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
shell脚本教程详细讲解(很好)解读
* #! /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 thenecho Incorrect number of arguments echo Usage: ifuser usernameelse 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 fifi ③判断用户是否已经在系统中登录 * 说明: (1)由于who | grep $user不是表达式而是命令组合,所以不需要test语句测试;如果命令组合执行成功,即找到指定的用户名则返回码为0;否则为非0。 (2)在这个程序中使用了grep字符串搜索命令和“|”管道命令 (3)用grep 命令–q选项来禁止显示搜索到的信息。 (4)还使用了exit命令,以终止shell程序的执行。exit 0表示程序终止后返回0值,而exit 1表示程序终止后返回非0的值。 * ④简单的菜单功能 #! /bin/sh - clearecho MENUechoecho 1.Find files modified in last 24 hoursecho 2.The free disk spaceecho 3.Space consumed by this userecho 4.Exitecho echo -n Select:read choicecase $choice in1)find $HOME -mtime -1 -print;;2)df;;3)du -s $HOME;;4)exit;;*)echo Invalid optionesac * 说明: (1)本程序菜单的第一项是显示/home目录下,最近24小时内所有修改过的文件。命令中的-1参数是数字“1”,表示一天(24小时)。第二项是检查磁盘空间。第三项是显示/home目录下文件的大小,命令中的-s选项是为了仅显示总计。第四项是退出程序。 (2)为了使程序美观,用echo –n实现输入的选择数字不换行。 (3)输入的数字不在1-4范围内时,显示无效的选项信息。 * #! /bin/sh -for file in *.txtdo leftname=`basename $file .txt` mv $file $leftname.docdone 说明: (1)在Linux系统中不支持mv *.txt *.doc这样的更名命令形式,如果需要将文件成批地更名最好编写一个shell脚本文件。 (2)在for语句的参数列表中使用了“*”通配符。 (3(在程序中用到basename命令,该命令从随后的文件名剥去指定的后缀。 ⑤将当前目录下所有的.txt文件更名 * #! /bin/sh – if test $# -ne 1 then echo “Usage: chuser username” else user=”$1” until who |grep “$user”/dev/null do sleep 300 done echo “$user has
文档评论(0)