资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第九单元,Shell编程基础,学习目标,Shell编程的概述Shell脚本的执行方式Shell中的特殊变量Shell脚本命令行参数变量测试指令(test)Shell控制语句(if)Shell控制语句(case)Shell控制语句(for)Shell控制语句(while)Shell控制语句(until),1、Shell编程的概述,Linux环境中,Shell不仅是常用的命令解释程序,而且是高级编程语言。用户可以通过编写Shell程序来完成大量任务的自动化。Shell编程语言,它有变量、关键字以及各种控制语句,比如if、case、while、for等语句,支持函数模块,有自己的语法结构。利用Shell程序设计语言可以编写出功能很强、但代码简单的程序。特别是它把相关的Linux命令有机地组合在一起,可大大提高编程的效率,充分利用Linux系统的开放性能,能够设计出适合自己要求的命令。,2、Shell脚本的执行方式,当一个Shell脚本程序编写好后就可以直接执行这个脚本了,它不像其它的某些程序(如C程序)需要编译后才能执行。执行Shell脚本程序的方法有在种:sh 例:sh test1.sh (“.sh”默认为Shell脚本的扩展名)。脚本绝对路径 或 ./脚本名相对路径当脚本程序对用户有可执行的权限时,用户就可以使用脚本的绝对路径或相对路径来执行该脚本。脚本名当脚本文件有执行权限以及脚本所在的目录已经在环变量中时就可以在任何目录中执么脚本名。,3、Shell中的特殊变量,在Shell脚本中经常会用到下列特殊的变量:$#:位置参数的个数sh test1.sh a b c ($# = 3)$*:参数配置变量sh test1.sh a b c ($* = “a”“b”“c”)$:当前shell进程的pid值$?:前一命令返回的状态值(0为正常)touch file1 ; echo $? ( 结果 = 0)$!:最近访问的后台进程的PID,4、Shell脚本命令行参数变量,当用户在使用一个带命令行参数的Shell脚本时,脚本名与它的参数名都可以通过一个特殊的变量来获取。例:sh scriptname.sh option1 option2 .引用Shell 脚本命令行参数$0命令名本身$1第一个参数(option1)$2第二个参数(option2)$3第二个参数(option3)$N第N个参数(optionN),5、测试指令(test),在Shell脚本中,经常会对一个对象进行测试,并把这个测试的逻辑值应用于判断语句中。指令test就可以针对三种对象进行测试:test对文件的测试test对字符串的测试test对整数的测试,5.1、test对文件的测试,对文件的特性进行的测试test file-d:文件file存在且为目录-f:文件file存在且为普通文件-r:文件file存在且为可读文件-w:文件file存在且为可写文件-x:文件file存在且为可执行文件-s:文件file存在且文件长度为非零例:test d /home/Lonny & echo Lonny用户目录存在”test测试结果为真是返回0,为假是返回非0值test也可以用 来取代如 -f /etc/passwd ,注意:方括号与内容之间需要有空格隔开。,5.2、test对字符串的测试,test 当字符串或变量的值为非空时,测试结果为真。test -z 当字符串或变量的值为空时,测试结果为真。test = 当字符串1或变量1的值与字符串2或变量2的值相同时,测试结果为真(注:在两边必须要有空格)。test != 当字符串1或变量1的值与字符串2或变量2的值不相同时,测试结果为真(注:在!两边必须要有空格)。与文件测试一样,test可以用 来代替。,5.3、test对整数的测试,test n1 eq n2(eq = equal)当n1等于n2时,测试结果真test n1 ne n2(ne = not equal)当n1不等于n2时,测试结果真test n1 lt n2(lt= less than)当n1小于n2时,测试结果真test n1 le n2(le=less than equal )当n1小于等于n2时,测试结果真test n1 gt n2(gt=great)当n1大于n2时,测试结果真test n1 ge n2(ge=great equal )当n1大于等于n2时,测试结果真,6、Shell控制语句(if),条件判断控制语句if的表达格式如下:,if then 动作fi表达式,if then 动作1else 动作2fi表达式,if then 动作1elif then 动作2elif then 动作3elif then 动作nelse 动作mfi表达式,注:在if条件控制语句中,只有当if或elif后面的的条件为真是才能执行then后面的的动作,如果当前面所有的条件都不成立时才运行else后面的动作。,7、Shell控制语句(case),条件判断控制语句case的格式如下:case 表达式 in匹配值 1)动作1;匹配值 2)动作2;匹配值 n)动作n; * )动作m;esac在case条件控制语句中,有只当匹配值与表达式的值相等时能能执行相对应的动作。,8、Shell控制语句(for),for循环控制语句格式如下:for 变量名 in one two three four five do动作donefor循环的次数是由in后面的参数的个数来决定,并且每次循环的时候都将相对应的参数值赋予for后面的变量。每次循环都会执行do与done之间的动作。,9、Shell控制语句(while),while循环控制语句的语法结构如下:while do动作done在while循环控制语句中,只有当while后面的条件为真的时候才会进入do与done之间的循环体,每循环一次都会去判断while后面之条件的真假。所以我们应当要在循环体设定一个可以影响while条件的语句,不然这个脚本便是一个死循环。,10、Shell控制语句(until),until循环控制语句的语法结构如下:until do动作doneuntil循环控制语句的执行流程到while循环控制语句的执行流程基本相同,只不过until循环控制语句是当until后的条件为假的时候才进入循环体。,根据当前系统的时间给出相应的问候语。0010早上好1113中午好1417下午好1823晚上好批量为系统创建用户与设置密码。Username:user1user20 Password:redhat时刻监听系统中的某一个用户是否登陆系统,如果此用户一旦登陆系统,则发出警告!时刻监听系统中的某一个区的使用量,如果此分区一旦超出80%,则发出警告!某企业有三个部门(人事、财务、销售),现要求为第一个部门共享一个目录(/hr、/cw、/xs),并且各部门的员工只能在对应的共享目录中写入数据。另外共享给各部门的目录空间大小是可以动态调整的。请为财务的存储空间设置Raid1以保证财务部门的数据安全。最后需对销售部的员工进行限额,其中主管(master)用户能够最多能够写入500M数据,普通的销售人员(xs1,xs2,xs3,.)最多写入300M数据。,练习,结束,The EndThanks,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号