- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Shel编程基础
# rename the original file: if [ -f $filen ]; then echo mv $filen $filen.1 mv $filen $filen.1 fi echo touch $filen touch $filen 这个脚本是如何工作的呢?在检测到用户提供了一个文件名之后,首先进行一个9到1的循环;文件名.9重命名为文件名.10,文件名.8重命名为文件名. 9……等等。循环结束之后,把原始文件命名为文件名.1,同时创建一个和原始文件同名的空文件(touch $filen)。 脚本调试 最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。 shell也有一个真正的调试模式,如果脚本strangescript出错,可以使用如下命令进行调试: sh -x strangescript 上述命令会执行该脚本,同时显示所有变量的值。 shell还有一个不执行脚本只检查语法的模式,命令如下: sh -n your_script 这个命令会返回所有语法错误。 我希望你们现在已经可以开始编写自己的shell脚本了,尽情享受这份乐趣吧! 让我们看一个例子,file命令可以辨别出一个给定文件的文件类型,如:file lf.gz,其输出结果为: lf.gz: gzip compressed data, deflated, original filename, last modified: Mon Aug 27 23:09:18 2001, os: Unix 我们利用这点写了一个名为smartzip的脚本,该脚本可以自动解压bzip2, gzip和zip 类型的压缩文件: #!/bin/sh ftype=`file $1` case $ftype in $1: Zip archive*) unzip $1 ;; $1: gzip compressed*) gunzip $1 ;; $1: bzip2 compressed*) bunzip2 $1 ;; *) error File $1 can not be uncompressed with smartzip;; esac 你可能注意到上面使用了一个特殊变量$1,该变量包含有传递给该脚本的第一个参数值。也就是说,当我们运行: smartzip articles.zip $1 就是字符串 articles.zip。 select 语句 select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择: select var in ... ; do break; done .... now $var can be used .... #!/bin/sh echo What is your favourite OS? select var in Linux Gnu Hurd Free BSD Other; do break; done echo You have selected $var 如果 以上脚本运行出现 select :NOT FOUND 将 #!/bin/sh 改为 #!/bin/bash 找了半天才找到的答案 该脚本的运行结果如下: What is your favourite OS? 1) Linux 2) Gnu Hurd 3) Free BSD 4) Other #? 1 You have selected Linux while/for 循环 在shell中,可以使用如下循环: while ...; do .... done 只要测试表达式条件为真,则while循环将一直运行。关键字break用来跳出循环,而关键字”continue”则可以跳过一个循环的余下部分,直接跳到下一次循环中。 for循环会查看一个字符串行表(字符串用空格分隔),并将其赋给一个变量: for var in ....; do .... done 下面的示例会把A B C分别打印到屏幕上: #!/bin/sh for var in A B C ; do echo var is $var done 下面是一个实用的脚本showrpm,其功能是打印一些RPM包的统计信息: #!/bin/sh # list a content summary of a number of RPM packages # USAGE: showr
您可能关注的文档
- 2009圳房地产市场年终分析报告.doc
- 2010-2015年中料行业投资分析及前景预测报告.doc
- 2010届全国校高三年级治模考易错题精编3.doc
- 2010交股份节能减排培训讲义.ppt
- 2010年下半年国券市场展望.doc
- 2010年历书写规范.doc
- 2010年浙江省综合知识真题.doc
- 2010年新居民安全知识竞赛参考试题.doc
- 2010年南省公员考试行测真题.doc
- 2010庆高新区工作方案.doc
- 2023-2024学年福建省福建师范大学第二附属中学高三下学期联合考试英语试题含解析.doc
- 2023-2024学年北京西城14中高三第二次模拟考试英语试卷含解析.doc
- 2023-2024学年成才之路高三第二次诊断性检测英语试卷含解析.doc
- 2023-2024学年甘肃省定西市渭源县高考英语四模试卷含解析.doc
- 2023-2024学年甘肃省白银市高三第二次调研英语试卷含解析.doc
- 2023-2024学年北京外国语大学附属中学高考考前提分英语仿真卷含解析.doc
- 2023-2024学年福建省泉州市南安一中高考英语五模试卷含解析.doc
- 2023-2024学年福州第三中学高三第四次模拟考试英语试卷含解析.doc
- 2023-2024学年阜新市实验中学高考英语押题试卷含解析.doc
- 2023-2024学年福建省宁德市高中同心顺联盟校高三下第一次测试英语试题含解析.doc
文档评论(0)