Linux第十二讲-Shell编程-LAMP兄弟连LINUX培训

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LAMP兄弟连Li培训配套课件LAMP兄弟连Linux培训配套课件Shell编程网址:电话:4007001307电话:4007001307咨询QQ:1020824692课程大纲课程大纲‡Shell编程语法‡Shell脚本调试‡Shell脚本调试‡Shell应用实例一个简单的shell程序$catexample#!/bin/sh#!/bin/sh#Thisistoshowwhataexamplelookslike.echoOurfirstexampleechoOurfirstexampleecho#Thisinsertsanemptylineinoutput.hWtlithflliditechoWearecurrentlyinthefollowingdirectory./bin/pwdhechoechoThisdirectorycontainsthefollowingfiles/bi/l/bin/ls一个简单的shell程序前面例子的结构:1#!指定执行脚本的shell1.#!指定执行脚本的shell2.#注释行,执行时被忽略。3命令和控制结构3.命令和控制结构创建shell程序的步骤:第一步创建一个包含命令和控制结构的文件第一步:创建一个包含命令和控制结构的文件。第二步:修改这个文件的权限使它可以执行。使用hd+使用chmodu+x第三步:执行./example(也可以使用“hl”执行)(也可以使用“shexample”执行)Shell变量变量:是shell传递数据的一种方法,用来代表每个取值的符号名。Shell有两类变量:临时变量和永久变量。Shell有两类变量:临时变量和永久变量。临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量。永久变量是环境变量,其值不随shell脚量位置变量永久变量是环境变量其值不随脚本的执行结束而消失。用户自定义变量用户自定义变量用户定义的变量由字母或下划线开头,由字母、数字或下划线序列组成,并且大小写字母意义不同变量名长度没有限制同。变量名长度没有限制。在使用变量值时,要在变量名前加上前缀“$”。设置和使用变量使设置变量:习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头不能用数字以字母表中的字符开头,不能用数字。变量赋值:赋值号“=”两边应没有空格。定义时赋值,如ABC=abcdefg将一个命令的执行结果赋给变量如:A=`date`将个命令的执行结果赋给变量,如:A=date将一个变量赋给另一个变量,如:A=$B使命令查看个变值例如使用echo命令用于查看一个变量值。例如:echo$A设置和使用变量设置和使用变量列出所有的变量:##set包含多个字的变量:$NAME=MikeRon运行时出错,应改为:$NAME=“MikeRon”或$NAME=‘MikeRon’$NAMEMikeRon或$NAMEMikeRon设置和使用变量使单引号和双引号的区别:$$i#$ABC=‘$NAMEJunior’#echo$ABC$NAMEJunior单引号之间的内容原封不动地指定给了变量。单引号之间的内容原封不动地指定给了变量。删除变量:#NAME#unsetNAME简单Shell脚本#!/bin/shhllifilhkdikh#ShellScriptfilename:checkdisk.shlog=/var/log/usr/bin/du-sh/home$log/du.log/bin/mail-sDiskUsageRatioroot$log/dulog/bin/mail-sDiskUsageRatioroot$log/du.log使用范例:#shcheckdisk.sh作用:检查指定目录的磁盘空间使用率,将结果记录在/var/log/du.log,发给root。结果记录在/var/log/du.log,发给root。位置变量和特殊变量位置变量和特殊变量Shell解释执行用户的命令时,将命令行的第一个字作为命令名,而其它字作为参数。由出现在命令行上的位置确定的参数称为位置参数。例如:ls-lfile1file2file3ls -l file1 file2 file3$0 这个程序的文件名ls -l$这个程序的第个参数值19$n 这个程序的第n个参数值,n=1-9特殊变量特殊变量有些变量是一开始执行Script时就会设定,且不能被修改但我们不叫它只读的系统变量而叫能被修改,但我们不叫它只读的系统变量,而叫它特殊变量。这些变量当一执行程序时就有了,用户无法将一般的系统变量设定成只读的。以下用户无法将般的系统变量设定成只读的。以下是一些等殊变量:$* 这个程序的所有参数$这个程序的参数个数$# 这个程序的参数个数$$ 这个程序的PID $!执行上个后台指令的PID$! 执行上一个后台指令的PID $? 执行上一个指令的返回值特殊变量#!/usr/bin/sh#testspecialvariable# test special variable# Usage: sh special.var file01 file02echo'$#is:'$#echo $# is: $#echo '$* is:' $*echo'$?is:'$?echo $? is: $?echo '$$ is:' $$ echo'$0is:'$0echo $0 is: $0Shell命令命令read命令:从键盘读入数据,赋给变量如:read  var1 var2 read 命令read的例子:#!/usr/bin/shreadfirstsecondthirdreadfirstsecondthirdechothefirstparameteris$firsththdti$d”echothesecondparameteris$second”echothethirdparameteris$thirdexpr 命令p命令Shell变量的算术运算:expr命令:对整数型变量进行算术运算例如:expr 3 + 5           expr$var15expr $var1 -5expr  $var1 / $var2pexpr  $var3 \* 10expr 命令p命令#!/bin/sha=10a=10b=20c=30`$$$`value1=`expr $a + $b + $c`echo The value of value1 is $value1value2=`expr$c/$b`value2expr $c / $becho The value of value2 is $value2value3=`expr $c \* $b`hThlfl3i$l3echo The value of value3 is $value3value4=`expr $a + $c / $b`echo The value of value4 is $value4$复杂的expr命令复杂的p命令复杂的运算:expr `expr 5+7`/$var4将运算结果赋予变量:var4=`expr$var1/$var2`var4= expr  $var1 / $var2 变量测试语句变量测试语句变量试句用试变量相等为变量测试语句:用于测试变量是否相等、是否为空文件类型等空、文件类型等。格式:test    测试条件测试范围:整数、字符串、文件变量测试语句变量测试语句字符串测试:teststr1=str2测试字符串是否相等ttt1!t2测试字符串是否不相等teststr1!=str2测试字符串是否不相等teststr1测试字符串是否不为空test-nstr1测试字符串是否不为空测试字符串是否为空test-zstr1测试字符串是否为空变量测试语句变量测试语句整数测试:testint1-eqint2测试整数是否相等testint1-geint2测试int1是否=int2testint1geint2测试int1是否int2testint1-gtint2测试int1是否int2testint1-leint2测试int1是否=int2testint1-ltint2测试int1是否int2testint1-ltint2测试int1是否int2testint1-neint2测试整数是否不相等变量测试语句变量测试语句文件测试:testdfile指定文件是否目录test-dfile指定文件是否目录test-ffile指定文件是否常规文件test-xfile指定文件是否可执行testrfile指定文件是否可读test-rfile指定文件是否可读test-wfile指定文件是否可写test-afile指定文件是否存在testsfile文件的大小是否非0test-sfile文件的大小是否非0变量测试语句变量测试语句变量测试语句一般不单独使用,一般做为if语句的测试条件,如:iftest-d$1theniftestd$1then…fi变量测试语句可用[]进行简化,如变量测试语句可用[]进行简化,如test-d$1等价于[-d$1]变量测试语句变量测试语句#!/bin/shif[$#ne2];thenif [ $# -ne 2 ]; thenecho Not enough parametersexit0exit 0fiif [ $1 -eq $2 ]; thenecho $1 equals $2elif [ $1 -lt $2 ]; thenecho$1littlerthan$2echo $1 littler than  $2elif [ $1 -gt $2 ]; then echo $1 greater than  $2eco$geateta$fi流控制语句流控制语句流控制句用控制hll程序的流程流控制语句:用于控制shell程序的流程exit语句:退出程序执行并返回一个返回码exit语句:退出程序执行,并返回个返回码,返回码为0表示正常退出,非0表示非正常退出。例如:exit  0流控制语句if语句的流程图流控制语句流控制语句if …then …fi语句,例如:语句例如if  [ -x  /etc/init.d/cron ]thenthen/etc/init.d/cron startfi流控制语句流控制语句if/else语句的流程图流控制语句流控制语句更复杂的if语句:if   条件1   then 命令1elif   条件2   then  命令2命令2else命令3fi流控制语句流控制语句:if/else嵌套的流程图流控制语句流控制语句多个条件的联合:-a:逻辑与,仅当两个条件都成立时,结果为真。逻辑或两个条件只要有个成立结果为真-o:逻辑或,两个条件只要有一个成立,结果为真。流控制语句流控制语句echo please input a file name:read file_nameif [ -d $file_name ]thenecho $filename is a directory$_yelif [ -f $file_name ]then   echo$filenameisacommonfileecho $file_name is a common fileelif [ -c $file_name -o -b $file_name ]then   echo$filenameisadevicefile“echo $file_name is a device fileelseecho $file_name is an unknown filefifi流控制语句流控制语句for…done语句格式:for  变量in   名字表ddo命令列表命令列表done流控制语句流控制语句例子:#!/usr/bin/shfor DAY in Sunday Monday Tuesday yyyWednesday Thursday Friday Saturdaydodoecho The day i

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功