




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
shell简易编程Linux项
目
七文旌课堂APP签到shell简易编程项目导读shell的本意是“壳”,它形象地说明了shell在Linux操作系统中的作用,即shell是紧紧包裹在Linux内核外面的一个壳程序,用户让操作系统做的所有任务,都是通过shell与系统内核的交互来完成的。shell既是一种命令,也是一种程序设计语言,它定义了各种变量和参数,并提供了许多在高级程序设计语言中才具有的控制结构,如选择和循环结构。利用shell可编写出代码简洁,但功能强大的脚本。学
习
目
标shell简易编程熟悉创建和执行shell脚本的方法。010203了解常用的shell变量。掌握shell脚本中条件判断语句的使用方法。掌握shell脚本中条件循环语句的使用方法。04思
政目
标培养良好的逻辑思维能力,养成良好的shell脚本编写习惯。增强遵守规则的意识,养成按规矩行事的习惯。PPT下载/xiazai/shell简易编程PPT下载/xiazai/项目导航
使用条件循环语句任务一任务二任务三了解简单的shell脚本使用条件判断语句了解简单的shell脚本任
务
一小邓了解到,shell脚本的功能非常强大。例如,能够一次性执行诸多命令;编写的程序无须编译即可运行;能够简化日常工作管理;等等。于是,小邓开始了解如何编写简单的shell脚本。1任务描述了解简单的shell脚本1一、shell脚本概述
shell脚本(shellscript)是利用shell的功能编写的程序,该程序是纯文本文件,文件中的语句可以是shell命令,如echo、pwd和mkdir等,或者是正则表达式、重定向和管道等,也可以是类似高级程序设计语言中的各种流程控制语句,如if条件判断语句和for条件循环语句等,还可以是以“#”开头的注释语句,注释语句在执行过程中将被忽略。
此外,用户可以在shell脚本中根据需要自定义变量或函数,以提高程序的复用性和可读性。由于shell脚本的类型有很多,为了使用户编写的脚本在各种类型的shell环境下都能执行,shell脚本中的第一行应为如下语句。了解简单的shell脚本#!/bin/bash1一、shell脚本概述
其中,“#!”表示脚本声明,用于告诉系统执行shell脚本使用的命令行终端解释器。此处表示执行shell脚本使用的命令行终端解释器为bash。了解简单的shell脚本可执行如下命令查看当前系统默认使用的命令行终端解释器。[root@localhost~]#echo$SHELL/bin/bash由以上执行结果可知,RHEL8默认使用的命令行终端解释器为bash。1二、创建和执行shell脚本1.创建shell脚本
通常使用文本编辑器Vim创建shell脚本,创建完成后就可以编写shell脚本了。shell脚本编写完成后,输入“:wq”并按“Enter”键即可保存文件并退出Vim。了解简单的shell脚本【实例7-1】
在“scripts”目录下创建名为“example7-1.sh”的shell脚本,用于查看当前工作目录及该目录下所有文件的详细信息。[root@localhost~]#mkdir/scripts[root@localhost~]#cd/scripts[root@localhostscripts]#vimexample7-1.sh1了解简单的shell脚本
打开“example7-1.sh”文件按“i”键后输入以下内容,然后保存文件并退出Vim。#!/bin/bashpwdls–l
shell脚本名可以是任意的,但为了与普通文件进行区分,建议添加“.sh”后缀,以表示是一个脚本文件。12.执行shell脚本
执行shell脚本主要有以下两种方式。(1)使用bash命令执行shell脚本,其格式如下。
这种方式无须将shell脚本的权限设置为可执行。该命令也可由“sh脚本名”命令代替。(2)直接输入shell脚本所在路径执行shell脚本,该路径可以是绝对路径,也可以是相对路径。例如,在“/home”目录下创建了一个名为“demo.sh”的shell脚本,则可以使用如下命令执行该脚本。了解简单的shell脚本bash脚本名1了解简单的shell脚本#以绝对路径的方式执行shell脚本[root@localhost~]#/home/demo.sh#以相对路径的方式执行shell脚本[root@localhost~]#cd/home[root@localhosthome]#./demo.sh
直接输入shell脚本所在路径执行shell脚本时,默认情况下会因为权限不足而提示错误信息,此时须将shell脚本的访问权限设置为可执行。1了解简单的shell脚本【实例7-2】
执行shell脚本“example7-1.sh”。(1)使用bash命令执行shell脚本。(2)直接输入shell脚本所在路径执行shell脚本。[root@localhostscripts]#bashexample7-1.sh/scripts总用量4-rw-r--r--.1rootroot2312月117:12example7-1.sh[root@localhostscripts]#./example7-1.shbash:./example7-1.sh:权限不够1了解简单的shell脚本
“example7-1.sh”文件默认不可执行,故提示“权限不够”。为“example7-1.sh”文件添加可执行权限后重新执行shell脚本,执行结果如下。[root@localhostscripts]#chmodu+xexample7-1.sh[root@localhostscripts]#./example7-1.sh/scripts总用量4-rwxr--r--.1rootroot2312月117:12example7-1.sh1三、shell变量1.用户变量
用户变量是指由用户自定义的普通变量。变量名由字母、数字、下画线组成,但是不能以数字开头,并且严格区分大小写,如dir与Dir是两个不同的变量名。
为用户变量赋值的过程也是声明一个变量的过程,用户变量的赋值形式如下。
为用户变量赋值后,要想修改变量值,只需重新赋值即可。要想声明一个只读变量,即赋值后不允许再修改,则可以在变量名前添加“readonly”关键词。要想访问变量值,可以在变量名前添加“$”符号。要想在屏幕上显示变量值,可以使用echo命令。了解简单的shell脚本变量名=字符串或数字1了解简单的shell脚本【实例7-3】
为用户变量赋值并访问和显示变量值。[root@localhost~]#readonlynum=100[root@localhost~]#num=80bash:num:只读变量[root@localhost~]#lcount=0[root@localhost~]#echo$lcount0[root@localhost~]#name="lidong"[root@localhost~]#echo$namelidong12.位置变量
在Linux操作系统命令行终端执行shell脚本时,脚本名后面可添加多个参数。这些参数可使用位置变量来表示,其中,$1表示第1个参数、$2表示第2个参数,依次类推,$n表示第n个参数,如图7-1所示。
了解简单的shell脚本$1,第1个参数$5,第5个参数$3,第3个参数图7-1shell脚本中的参数13.内部变量
内部变量是Linux操作系统提供的一种特殊类型的变量,在shell脚本中,内部变量值是不能修改的。使用内部变量可以接收用户输入的参数,更好地满足用户的一些实时需求,从而更加灵活地完成任务。部分内部变量及其含义如下。(1)$#:参数的数量。(2)$?:命令执行后的返回值。(3)$0:shell脚本名。(4)$*:所有参数。
了解简单的shell脚本1了解简单的shell脚本【实例7-4】
位置变量和内部变量的使用。[root@localhost~]#vimvariable.sh#!/bin/bashecho"当前脚本名称为$0"echo"总共有$#个参数,分别是$*。"echo"第1个参数为$1,第3个参数为$3,第5个参数为$5。"[root@localhost~]#bashvariable.shonetwothreefourfive当前脚本名称为variable.sh总共有5个参数,分别是onetwothreefourfive。第1个参数为one,第3个参数为three,第5个参数为five。1小邓计划编写一个shell脚本来实现定时任务,任务实施了解简单的shell脚本了解简单的shell脚本使用条件判断语句任
务
二
在实际生产环境中,往往需要根据真实的工作需求来判断是否执行指定的命令,此时,就需要使用条件判断语句。2任务描述使用条件判断语句2一、条件测试语句
shell脚本中的条件测试语句可以测试条件表达式的值,若它为真,则返回数字0,否则返回非0。在shell脚本中,条件测试语句可使用test命令来完成,其语法格式如下。条件测试语句也可使用判断符号“[]”来完成,其语法格式如下。使用条件判断语句test条件表达式[条件表达式]
test命令的使用方法和“[]”基本一致,只是“[]”常用在if语句中。在“[条件表达式]”格式中,“[”“]”与条件表达式之间至少有一个空格。2
按照测试对象来划分,条件测试语句可分为文件测试语句、逻辑测试语句、整数比较语句和字符串比较语句。1.文件测试语句
文件测试语句用于测试文件是否存在或是否具有某种权限等。常用的文件测试运算符及其含义如表7-1所示。使用条件判断语句表7-1常用的文件测试运算符及其含义运算符含义-e测试文件是否存在-f测试文件是否为普通文件-d测试文件是否为目录-r测试当前用户对某文件是否具有“可读”权限-w测试当前用户对某文件是否具有“可写”权限-x测试当前用户对某文件是否具有“可执行”权限2使用条件判断语句【实例7-5】
测试“/etc/passwd”文件是否为目录。以上执行结果返回1(非0),表示“/etc/passwd”文件不是目录。[root@localhost~]#[-d/etc/passwd]#显示上一条命令执行后的返回值[root@localhost~]#echo$?122.逻辑测试语句
逻辑测试语句用于对条件表达式的值进行逻辑分析。常用的逻辑测试运算符及其含义如表7-2所示。使用条件判断语句表7-2常用的逻辑测试运算符及其含义运算符含义&&(逻辑“与”)当“&&”前面的条件表达式为真时才会执行后面的表达式。两个条件表达式的值同时为真,则返回真;否则为假||(逻辑“或”)当“||”前面的条件表达式为假时才会执行后面的表达式。两个条件表达式的值同时为假,则返回假;否则为真!(逻辑“非”)将条件表达式的值取反,即如果之前为真,则将其变为假;之前为假,则将其变为真2使用条件判断语句【实例7-6】
逻辑测试语句的应用。#测试“/scripts/example7-1.sh”文件是否存在,若存在则输出“exist”[root@localhost~]#[-e/scripts/example7-1.sh]&&echo"exist"exist#测试“/scripts/example.sh”文件是否存在,若不存在则输出“notexist”[root@localhost~]#[-e/scripts/example.sh]||echo"notexist"notexist#使用系统环境变量USER查看当前登录的用户[root@localhost~]#echo$USERroot#测试当前用户是否为root用户[root@localhost~]#[!$USER=root]||echo"administrator"administrator2
整数比较语句仅是对数字的操作。常用的整数比较运算符及其含义如表7-3所示。使用条件判断语句表7-3常用的整数比较运算符及其含义运算符含义运算符含义-eq是否等于-lt是否小于-ne是否不等于-ge是否大于等于-gt是否大于-le是否小于等于2使用条件判断语句【实例7-7】
整数比较语句的应用。[root@localhost~]#[100-ge88][root@localhost~]#echo$?0[root@localhost~]#num=512[root@localhost~]#[$num-lt1024]&&echo"小于"小于
整数比较语句不能将数字与字符串、文件等一起操作。24.字符串比较语句
字符串比较语句用于测试字符串是否为空,或两个字符串是否相同。常用的字符串比较运算符及其含义如表7-4所示。使用条件判断语句表7-4常用的字符串比较运算符及其含义运算符含义运算符含义=测试字符串内容是否相同-z测试字符串内容是否为空!=测试字符串内容是否不同-n测试字符串内容是否不为空2使用条件判断语句【实例7-8】
字符串比较语句的应用。[root@localhost~]#[-z$String]&&echo"该变量为空,未定义"该变量为空,未定义2二、if语句
if语句是条件判断语句,使用if语句可以根据某些条件执行指定的命令。if语句可分为单分支if语句、双分支if语句和多分支if语句。1.单分支if语句单分支if语句由if、then和fi关键词组成,其语法格式如下。以上语句的执行过程是,先判断条件表达式的值,如果它为真,则执行then之后的命令列表;否则结束退出。使用条件判断语句if条件表达式 then命令列表fi2使用条件判断语句【实例7-9】
单分支if语句的应用。【参考代码】[root@localhost~]#vim/scripts/example7-9.sh#!/bin/bashFile="/scripts/example7-8.sh" #定义变量if[!-e$File] #判断“/scripts/example7-8.sh”文件是否存在 then touch$File #如果不存在,则创建fi 2使用条件判断语句【执行结果】[root@localhost~]#bash/scripts/example7-9.sh#查看“/scripts/example7-8.sh”文件是否创建成功[root@localhost~]#ls-l/scripts总用量8-rwxr--r--.1rootroot2312月117:12example7-1.sh-rw-r--r--.1rootroot012月117:40example7-8.sh-rw-r--r--.1rootroot19112月117:40example7-9.sh 【脚本分析】由于“/scripts/example7-8.sh”文件不存在,则对其取反之后变为存在,此时if条件表达式的值为真,则执行then之后的命令,即使用touch命令创建“/scripts/example7-8.sh”文件。22.双分支if语句双分支if语句由if、then、else和fi关键词组成,其语法格式如下。以上语句的执行过程是,先判断条件表达式的值,如果它为真,则执行then之后的命令列表;否则执行else之后的命令列表。使用条件判断语句if条件表达式 then命令列表else命令列表fi2使用条件判断语句【实例7-10】双分支if语句的应用。【参考代码】[root@localhost~]#vim/scripts/example7-10.sh#!/bin/bashFile="/scripts/example7-8.sh" #定义变量#判断“/scripts/example7-8.sh”文件是否存在if[!-e$File] then touch$File #如果不存在,则创建else chmodu+x$File #如果存在,则赋予其可执行权限fi 2使用条件判断语句【执行结果】[root@localhost~]#bash/scripts/example7-10.sh#查看“/scripts/example7-8.sh”文件是否具有可执行权限[root@localhost~]#ls-l/scripts/example7-8.sh-rwxr--r--.1rootroot012月117:40/scripts/example7-8.sh 【脚本分析】由于“/scripts/example7-8.sh”文件已经存在,则对其取反之后变为不存在,此时if条件表达式的值为假,则执行else之后的命令,即使用chmod命令赋予“/scripts/example7-8.sh”文件可执行权限。23.多分支if语句多分支if语句由if、then、elif、else和fi关键词组成,其语法格式如下。以上语句的执行过程是,先判断条件表达式1的值,如果它为真,则执行命令列表1;否则,判断条件表达式2的值,如果它为真,则执行命令列表2;依次类推,如果条件表达式的值都为假,则执行命令列表n。使用条件判断语句if条件表达式1 then命令列表1elif条件表达式2 then命令列表2……else 命令列表nfi2使用条件判断语句【实例7-11】多分支if语句的应用。【参考代码】[root@localhost~]#vim/scripts/example7-11.sh#!/bin/bashread-p"请输入成绩:"scoreif[$score-ge90]
#如果score大于等于90,输出“优” then echo"优"elif[$score-ge80] #如果score大于等于80,输出“良” then echo"良"elif[$score-ge70] #如果score大于等于70,输出“中” then echo"中"elif[$score-ge60] #如果score大于等于60,输出“及格” then echo"及格"else #如果score小于60,输出“不及格” echo"不及格"fi 2使用条件判断语句【执行结果】[root@localhost~]#bash/scripts/example7-11.sh请输入成绩:80良[root@localhost~]#bash/scripts/example7-11.sh请输入成绩:55不及格 【脚本分析】使用read命令的“-p”选项从键盘输入成绩“score”的值,然后对其进行判断。因为80小于90,所以if条件表达式的值为假,继续判断。又因为80大于等于80,所以第一个elif条件表达式的值为真,则输出“良”。由于输入55时,所有条件表达式的值都为假,故执行else之后的命令,即输出“不及格”。2三、case语句
case语句是多分支条件判断语句,由case、in和esac关键词组成,其语法格式如下。使用条件判断语句case变量值in模式字符串1) 命令 …… 命令;;……模式字符串n) 命令 …… 命令;;*) 命令 …… 命令;;esaccase语句的执行过程是,用给定变量值依次与各模式字符串进行比较,如果与某一个模式字符串匹配,那么就执行该模式字符串之后的命令,直至遇到两个分号为止。如果给定变量值与所有模式字符串都不匹配,则执行“*)”之后的命令。
在大多数情况下,如果存在很多条件,则可以使用case语句代替if语句。2使用条件判断语句【实例7-12】根据指定省份输出省会。【参考代码】[root@localhost~]#vim/scripts/example7-12.sh#!/bin/bashcase$1in guangdong) #如果变量值是“guangdong”,输出“guangzhou” echo"guangzhou";; henan) #如果变量值是“henan”,输出“zhengzhou” echo"zhengzhou";; hubei) #如果变量值是“hubei”,输出“wuhan” echo"wuhan";; *) #如果变量值是其他字符串,输出“error” echo"error";;esac 2使用条件判断语句【执行结果】[root@localhost~]#bash/scripts/example7-12.shhubeiWuhan[root@localhost~]#bash/scripts/example7-12.shshanerror【脚本分析】第一次执行该脚本时变量值是“hubei”,它与模式字符串“hubei”匹配,则执行该模式字符串之后的命令,输出“wuhan”。第二次执行该脚本时变量值是“shan”,它与所有模式字符串都不匹配,则执行“*)”之后的命令,输出“error”。2使用条件判断语句【实例7-13】从键盘输入一个字符,然后判断该字符是字母、数字还是其他字符,并输出相应的提示信息。【参考代码】[root@localhost~]#vim/scripts/example7-13.sh#!/bin/bashread-p"请输入一个字符:"KEYcase$KEYin [a-z]|[A-Z]) #如果输入一个字母,输出“输入的是字母” echo"输入的是字母";; [0-9]) #如果输入一个数字,输出“输入的是数字” echo"输入的是数字";; *) #如果输入的既不是字母也不是数字 echo"输入的是其他字符" #输出“输入的是其他字符” echo"可能是空格、功能键等";; #输出“可能是空格、功能键等”esac2使用条件判断语句【执行结果】[root@localhost~]#bash/scripts/example7-13.sh请输入一个字符:3输入的是数字[root@localhost~]#bash/scripts/example7-13.sh请输入一个字符:s输入的是字母[root@localhost~]#bash/scripts/example7-13.sh请输入一个字符:~输入的是其他字符可能是空格、功能键等2使用条件判断语句【脚本分析】第一次执行该脚本时从键盘输入数字3,它与模式字符串“[0-9]”匹配,则执行该模式字符串之后的命令,输出“输入的是数字”。第二次执行该脚本时从键盘输入字母“s”,它与模式字符串“[a-z]|[A-Z]”匹配,则执行该模式字符串之后的命令,输出“输入的是字母”。第三次执行该脚本时从键盘输入字符“~”,它与所有模式字符串都不匹配,则执行“*)”之后的命令,输出“输入的是其他字符”“可能是空格、功能键等”。2使用条件判断语句【实例7-14】在case语句中“或”的应用。【参考代码】[root@localhost~]#vim/scripts/example7-14.sh#!/bin/bashcase$1in start|begin) #如果变量值是“start”或“begin”,输出“startInternet” echo"startInternet";; stop|end) #如果变量值是“stop”或“end”,输出“stopInternet” echo"stopInternet";; *) #如果变量值是其他字符串,输出“Ignorant” echo"Ignorant";;esac2使用条件判断语句【执行结果】[root@localhost~]#bash/scripts/example7-14.shbeginstartInternet【脚本分析】执行该脚本时变量值是“begin”,它与模式字符串“start|begin”中的“begin”模式匹配,则执行该模式字符串之后的命令,输出“startInternet”。2小邓计划编写一个名为“Mem_Check.sh”的shell脚本,用于查看内存剩余量。如果内存剩余量小于指定值,就提示及时清理。使用条件判断语句任务实施使用条件判断语句使用条件循环语句任
务
三在实际生产环境中,经常会遇到需要根据某些条件重复执行指定命令的情况,此时,就需要使用条件循环语句。3任务描述使用条件循环语句3一、while语句
while语句由while、do和done关键词组成,其语法格式如下。while语句的执行过程是,先判断条件表达式的值,如果它为真,则进入第一次循环并执行命令列表;接着再次判断条件表达式的值,如果依然为真,则进入第二次循环继续执行命令列表;依次执行,直到条件表达式的值为假,退出循环并终止while语句的执行。使用条件循环语句while条件表达式do 命令列表done3使用条件循环语句【实例7-15】while语句的应用。【参考代码】[root@localhost~]#vim/scripts/example7-15.sh#!/bin/bashwhile[$1]do if[-f$1] #判断第一个参数是否为普通文件 thenecho"display:$1" ls-l$1 elseecho"$1isnotafilename." fishift #shift命令用于将后续参数左移done3使用条件循环语句【执行结果】[root@localhost~]#cd/scripts[root@localhostscripts]#bashexample7-15.shexample7-15.sh/scriptsdisplay:example7-15.sh-rw-r--r--.1rootroot25112月119:01example7-15.sh/scriptsisnotafilename.【脚本分析】第一个参数“/scripts/example7-15.sh”为普通文件,则显示其详细信息,第一次循环结束;接着第一个参数变为“/scripts”,它不是普通文件,则显示不是文件名的信息;最后参数为空,while语句结束。3二、for语句
for语句由for、in、do和done关键词组成,其语法格式如下。for语句的执行过程是,首先将取值列表中的第一个值作为变量值,进入第一次循环并执行命令列表;然后将取值列表中的第二个值作为变量值,进入第二次循环并执行命令列表;依次执行,直到将取值列表中的所有值都取一遍之后,才退出循环并终止for语句的执行。使用条件循环语句for变量名in取值列表do 命令列表done3使用条件循环语句【实例7-16】for语句的应用。【参考代码】[root@localhost~]#vim/scripts/example7-16.sh#!/bin/bashforiin/scripts/*.sh #确定变量i的取值范围do ls-l$i #查看变量i所取值的详细信息done3使用条件循环语句【执行结果】[root@localhost~]#bash/scripts/example7-16.sh-rw-r--r--.1rootroot30212月117:51/scripts/example7-10.sh-rw-r--r--.1rootroot46712月118:08/scripts/example7-11.sh-rw-r--r--.1rootroot13712月118:22/scripts/example7-12.sh-rw-r--r--.1rootroot23212月118:34/scripts/example7-13.sh-rw-r--r--.1rootroot13312月118:42/scripts/example7-14.sh-rw-r--r--.1rootroot25112月119:01/scripts/example7-15.sh-rw-r--r--.1rootroot13912月119:26/scripts/example7-16.sh-rw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疫情寒假期间家长会课件
- 互联网文化创意产业合作协议
- 工程绿化课件
- 农业生产信息化软件开发合作协议
- 能源管理系统供应合同
- IT基础设施建设承包合同
- 疟疾诊断知识课件
- 家庭农场农事操作规范化合同
- 酒店餐饮连锁经营加盟合同
- 农业科技园智慧农业综合服务平台建设
- 【培训课件】建筑工程安全管理与应急预案编制技术培训讲义
- 小学生毛笔书法课件教学
- 高炉煤气干法袋式除尘设计规范
- 水利工程施工危险源识别
- 天津市历年中考作文题与审题指导(2000-2024)
- 2025年陕西延长石油矿业有限责任公司招聘笔试参考题库含答案解析
- 乘除法练习题1000道可直接打印
- (完整版)架子工安全技术交底
- 2025年度大型活动鸡鸭鹅活禽租赁与供应合同
- 消杀培训课件
- 减少施工现场临时用电安全隐患QC成果
评论
0/150
提交评论