版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
博学谷——让IT教学更简单,让IT学习更有效PAGE12PAGE6《openEuler系统管理与运维》教学设计课程名称:授课年级:授课学期:教师姓名:年月课题名称项目7使用Shell脚本管理服务器任务7-1编写选择结构程序计划课时4课时教学引入随着公司业务的不断增加,运维人员的工作量越来越大,为提升运维效率,公司决定通过Shell脚本实现自动化运维,技术主管要求王亮学习Shell脚本的基础语法,编写选择结构和循环结构程序,并通过智能体生成Shell脚本程序,解决工作中的实际问题。教学目标【知识目标】(1)了解Shell运行环境。(2)掌握Shell脚本的作用。【技能目标】(1)能够编写Shell基础语法脚本程序。(2)能够编写Shell选择结构脚本程序。【素养目标】(1)通过编写Shell基础语法程序,培养学生通过自动化技术解决问题的能力。(2)通过编写Shell选择结构脚本程序,培养学生编写程序时的结构化思维。教学重点编写Shell基础语法脚本程序教学难点编写Shell选择结构脚本程序。教学方式课堂教学以PPT讲授为主,并结合多媒体进行教学教学过程任务7-1编写选择结构程序※通过直接引入的方式导入新课确保服务器健康运行是系统管理员的核心任务,为了提升王亮的技术能力,技术主管要求他深入学习Shell脚本的基础语法,包括标识符、变量、运算符、表达式和函数的定义与使用。王亮还需要掌握Shell脚本中选择结构的应用,利用智能体编写高效的监控脚本,检测系统资源(CPU、内存、磁盘)使用情况,实现自动告警和智能化运维。※新课讲解一、教师通过PPT的方式讲解1.Shell运行环境Shell环境是用户与操作系统交互命令的运行环境。它提供了一个接口,用户可以通过它执行命令、运行脚本、进行文件管理等。Shell是用户与操作系统内核之间的接口,理解Shell环境对于编写Shell脚本、系统管理、自动化任务等方面都非常重要。(1)常见的Shell类型不同的Shell提供了不同的功能和语法,常见的几种Shell如下所示。Bash:Linux和macOS系统中最常用的Shell,兼容性强,功能丰富,支持脚本。Sh:Unix系统的原始Shell,Bash的前身,语法相对较简单。Zsh:一个功能强大的Shell,支持自动补全、历史命令搜索等功能,Zsh还可以通过插件进行扩展,成为一个非常个性化的Shell环境。Fish:一个用户友好的交互式Shell,具有直观的语法高亮、自动补全、语法检查等功能。(2)读取配置文件当用户登录到操作系统时,设置的Shell会启动,执行Shell全局配置文件/etc/profile、用户目录下的~/.bash_profile、~/.bashrc。(3)环境变量Shell环境依赖于许多环境变量,它们为Shell提供了关于系统状态和配置的关键信息。2.Shell脚本的作用Shell脚本是一系列Shell命令的集合,它们被写在一个文本文件中,通过Shell环境按顺序执行,广泛应用于系统管理、任务调度、批处理、文件处理等多个领域。它的作用不仅仅限于提高工作效率,还能显著减少人为错误。以下是Shell脚本的主要作用和应用场景。(1)自动化任务Shell脚本最主要的作用之一就是执行自动化任务。通过编写脚本,可以将常见的重复性操作(如文件备份、日志清理、软件安装等)自动化执行,从而节省大量的时间和精力,如每天定时备份数据、清理系统临时文件、下载更新等操作,都可以通过Shell脚本来完成。(2)系统监控与报警Shell脚本能够监控系统的健康状态,及时发现潜在问题并采取措施。例如,脚本可以监控磁盘空间、CPU使用率、内存占用、网络流量等,并在系统资源出现异常时自动发送邮件通知管理员。这样,管理员能够及时采取措施,防止系统崩溃或服务中断。(3)批处理操作Shell脚本在批处理操作中具有重要作用,它可以自动化执行一系列文件处理任务,如批量重命名、移动文件、修改文件权限、删除指定文件等,避免了手动操作的繁琐和错误。(4)任务调度与定时执行在Linux系统中,Shell脚本常与定时任务管理工具结合使用,实现任务的定时调度。如每天定时执行备份操作、每周执行系统更新、每月进行日志归档等任务,确保系统自动完成常规的维护工作,而无需人工干预。二、熟悉Shell脚本基础语法1.创建编写和运行Shell脚本的服务器(1)创建shell服务器在盘符E上(根据实验环境选择)创建目录任务7-1,在任务7-1目录下创建子目录shell,使用openEuler.ova模板机创建名称为shell的服务器,保存到E:\任务7-1\shell目录下,如图7-2所示。图7-2任务7-1创建shell服务器(2)配置服务器IP地址使用VMwareWorksation打开java服务器,登录后修改ens32网卡配置文件,配置IP地址为192.167.200.30/24,网关为192.167.200.2,DNS为8.8.8.8,如图7-3所示。图7-3任务7-1配置shell服务器的IP地址完成后,重新加载网络连接配置并激活名称为ens32的网卡,查看IP地址,结果如图7-4所示。图7-4任务7-1查看shell服务器的IP地址2.创建和执行Shell脚本使用Xshell工具登录名称为shell的服务器,修改服务器的名称为shell,如下所示。[root@localhost~]#hostnamectlset-hostnameshell(1)创建脚本文件使用vi创建一个.sh扩展名的脚本文件monitor.sh,如下所示。[root@shell~]#vimonitor.sh在文件中输入以下内容。#!/bin/bashecho"检查磁盘使用情况"df-hecho"检查内存使用情况"free-h(2)赋予文件执行权限创建脚本文件后,需要给脚本添加执行权限,如下所示。[root@shell~]#chmod+xmonitor.sh(3)执行脚本添加执行权限后,就可以运行脚本,如下所示。[root@shell~]#./monitor.sh,结果如图7-5所示。图7-5任务7-1运行脚本3.变量变量是在脚本执行过程中可以改变的值,通常用来保存数值、命令的输出或文件路径等信息。定义变量时,格式为变量名=变量值,其中等号两边不能有空格,Shell变量的名称可以由字母、数字和下划线组成,但不能以数字开头。在脚本中引用变量时,需要在变量名前加上$符号。(1)定义基本变量(2)赋值命令结果给变量(3)创建一个环境变量NAME,值为zs(4)使用预定义变量4.运算符在Shell脚本中,运算符是进行各种操作的符号,运算符分为多种类型,包括算术运算符、关系运算符、布尔运算符、逻辑运算符、字符串运算符、测试文件运算符等,帮助脚本完成数学计算、逻辑判断、字符串处理等任务。(1)编写算术运算符程序运算符说明举例-eq检测两个数是否相等,相等返回true[$a-eq$b]a和b相等返回
true-ne检测两个数是否相等,不相等返回true[$a-ne$b]a不等于b返回true-gt检测左边的数是否大于右边的,是返回true[$a-gt$b]a大于b返回true-lt检测左边的数是否小于右边的,是返回true[$a-lt$b]a小于b返回true-ge检测左边的数是否大于等于右边的,是返回true[$a-ge$b]a大于等于b返回true-le检测左边的数是否小于等于右边的,是返回true[$a-le$b]a小于等于b返回true算术运算符对数据进行运算时使用,经常使用的算术运算符如表8-1所示。表8-1任务7-1算术运算符运算符说明举例+计算机数值的和1+2返回值为3-计算机数值的差10-2返回值为8*计算机数值的积10*5返回值为50/计算数值的商10/2返回值为5**求幂值2**3返回值为8%取余数7%2返回值为1(2)编写算术运算符程序关系运算符用于比较数字,必须用在
[]
内部,常用的关系运算符如表8-2所示。表8-2任务7-1关系运算符(3)编写字符串运算符程序shell脚本字符串运算符用来进行字符串的比较,常用的字符串运算符如表8-3所示。表8-3任务7-1字符串运算符运算符说明举例=
或
==检测两个字符串是否相等,相等返回true[“hello”=“hello”]返回true!=检测两个字符串是否相等,不相等返回true[“hello”!=“world”]返回
true-z检测字符串长度是否为0(空字符串),为0返回true[-z“”]返回true-n检测字符串长度是否为非0,非0返回true[-n“world”]返回true(4)编写逻辑运算符程序逻辑运算符用于连接或取反多个测试条件,常用的逻辑运算符如表8-4所示。表8-4任务7-1逻辑运算符运算符说明举例&&与运算,两个表达式都为true才返回true[5-lt10&&20-gt5]返回
true||或运算,有一个表达式为true则返回true[5-lt10||5-gt20]返回
true(5)编写文件运算符程序文件运算符用来测试文件或者目录,常用的文件运算符如表8-5所示。表8-5任务7-1文件运算符操作符说明-e检测文件(包括目录)是否存在,如果是,则返回true-s检测文件是否为空(文件大小是否大于0),不为空返回true-d检测文件是否是目录,如果是,则返回true-r检测文件是否可读,如果是,则返回true-w检测文件是否可写,如果是,则返回true-x检测文件是否可执行,如果是,则返回true-f检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true-b检测文件是否是块设备文件,如果是,则返回true-c检测文件是否是字符设备文件,如果是,则返回true5.函数Shell函数可以封装重复的代码块,提高脚本可维护性,下面通过具体函数脚本进行说明。(1)编写定义和调用函数的脚本在/root目录下,创建func1.sh的脚本,输入以下内容。#!/bin/bash#定义一个简单的函数,输出一条消息greet(){echo"您好,欢迎使用Shell脚本!"}#调用函数greet以上脚本中,通过greet()加上{}定义了一个名称为greet的函数,将函数功能写在{}中,再通过调用函数的名称greet,执行函数功能,保存后执行fun1.sh脚本,如下所示。[root@shell~]#bashfunc1.sh您好,欢迎使用Shell脚本!编写能接收参数的函数脚本在/root目录下,创建func2.sh,输入以下内容。#!/bin/bash#定义一个函数,接收一个名字并打印欢迎消息welcome(){localname=$1#获取第一个参数,不需要转义$echo"欢迎您,$name!"}#调用函数并传递一个参数welcome"小明"以上脚本中,在调用welcome函数的时候,传递了一个参数“小明”,通过localname定义了一个局部变量name,该变量只能在函数体内使用,通过$1接收传递的第1个参数,即“小明”,然后通过echo命令输入欢迎信息,保存后执行func2.sh脚本,如下所示。[root@shell~]#bashfunc2.sh欢迎您,小明!(3)编写有返回值的函数在/root目录下创建func3.sh,输入以下内容。#!/bin/bash#定义一个函数,接收两个参数并计算它们的和add(){localnum1=$1#将第一个参数赋值给num1localnum2=$2#将第二个参数赋值给num2localsum=$((num1+num2))#计算两个数字的和echo$sum#输出结果}#调用函数并传递两个参数result=$(add58)#输出返回值echo"两个数的和是$result"以上脚本中定义了一个名称为add的函数,在函数体内定义了2个局部变量num1和num2,通过$1和$2接收2个参数,计算了2个数值的和,使用echo命令输出结果,在调用add函数时传递了参数5和8,并通过$符接收add函数的输出结果,最后将返回的结果输出,保存后执行func3.sh,结果如下所示。[root@shell~]#bashfunc3.sh两个数的和是13三、编写单分支和多分支脚本1.编写单分支脚本Shell选择结构可以条件判断情况执行不同的代码块,单分支结构仅包含一个条件判断,条件为真时执行代码,为假时直接跳过,语法如下。if条件判断;then条件为真时执行的命令;fi(1)编写判断目录是否存在的脚本在/root目录下创建dir.sh脚本,输入以下内容。#/bin/bashread-p"输入您要查询的目录"dirif[-d$dir];thenecho“目录存在”fiif[!-d$dir];thenecho"目录不存在"mkdir-p$direcho"已经为您创建"fi以上脚本提示用户输入查询的目录,然后通过2个单分支语句判断目录是否存在,如果存在,则输出目录存在,如果目录不存在,则为用户创建目录,保存后执行dir.sh,输入目录/root,结果如下所示。[root@shell~]#bashdir.sh输入您要查询的目录/root“目录存在”(2)编写判断用户是否存在的脚本在/root目录下创建user.sh脚本,输入以下内容。#!/bin/bash#提示用户输入用户名read-p"请输入要检查的用户名:"username#检查用户是否存在ifid"$username"&>/dev/null;thenecho"用户$username已存在"fi#检查用户是否不存在if!id"$username"&>/dev/null;thenecho"用户$username不存在,正在创建..."useradd"$username"echo"用户$username创建成功"fi以上脚本提示用户输入用户名,当用户存在时,显示用户存在,当用户不存在时,创建用户,其中&>/dev/null的功能是将命令的标准输出和标准错误输出都重定向到黑洞文件,屏蔽id命令的输出信息,保存后运行user.sh脚本,输入用户名zs,结果如下所示。[root@shell~]#bashuser.sh请输入要检查的用户名:zs用户zs不存在,正在创建...用户zs创建成功通过结果发现,脚本自动创建了用户zs,再次运行user.sh脚本,输入zs用户,如下所示。[root@shell~]#idzsuid=1000(zs)gid=1000(zs)组=1000(zs)[root@shell~]#bashuser.sh请输入要检查的用户名:zs用户zs已存在由于已经创建了zs用户,所以显示用户zs已存在。2.编写多分支脚本Shell多分支结构包含多个条件判断,运行脚本时,按顺序检查条件判断,当某个分支条件为真时,执行相应代码,完成后,不再进行其他条件判断,退出选择结构,如果所有条件都不成立,则运行最后默认的else分支,语法所下所示。if[条件判断1];then条件1为真时执行的命令elif[条件判断2];then条件2为真时执行的命令elif[条件判断3];then条件3为真时执行的命令else所有条件都不为真时执行的命令fi(1)编写判断年龄的脚本在/root目录下创建age.sh,输入以下内容。#!/bin/bashread-p"请输入您的年龄:"ageif[$age-lt18];thenecho"未成年人"elif[$age-lt70];thenecho"成年人"elseecho"老年人"fi以上脚本中,提示用户输入年龄,判断后输出用户的年龄年龄段,保存后运行age.sh,输入10,如下所示。[root@shell~]#bashage.sh请输入您的年龄:10未成年人再次运行age.sh脚本,输入30,如下所示。[root@shell~]#bashage.sh请输入您的年龄:30成年人再次运行age.sh脚本,输入80,如下所示。[root@shell~]#bashage.sh请输入您的年龄:80老年人(2)使用多分支结构判断某个目录是否存在在/root目录下创建dir1.sh,输入以下内容。#!/bin/bashread-p"输入您要查询的目录"dirif[-d$dir];thenecho“目录存在”elseecho"目录不存在"mkdir-p$direcho"已经为您创建"fi在以上多分支判断目录是否存在的脚本中,如果目录存在,执行if分支内的代码块,不会再进行任务判断,这是因为多分支结构具有排他性,只会执行其中一个分支,执行完匹配的分支后立即退出整个选择结构,不会像单分支结构进行多余的判断,保存后运行dir1.sh,输入/mnt,结果如下所示。[root@shell~]#bashdir1.sh输入您要查询的目录/mnt“目录存在”再次运行dir1.sh,输入目录/shell,结果如下所示。[root@shell~]#bashdir1.sh输入您要查询的目录/shell目录不存在已经为您创建检查创建的shell目录,如下所示。[root@shell~]#ls-d/shell//shell/(3)编写判断服务是否启动的脚本在shell服务器上安装nginx服务,如下所示。[root@shell~]#dnfinstallnginx-y在/root目录下创建nginx.sh脚本,判断nginx服务是否启动,如果启动输出“nginx服务已经启动”,如果没有启动,启动nginx服务,内容如下。#!/bin/bashsystemctlstatusnginx&>/dev/nullif[$?-eq0];thenecho"nginx服务运行正常"elseecho"nginx服务未运行,正在启动并设置开机自启..."systemctlstartnginx&&systemctlenablenginxecho"nginx服务已成功启动并设置开机自启"fi以上脚本中,使用&>/dev/null屏蔽systemctlstatusnginx的输出内容,然后通过$?-eq0判断上一条命令是否执行成功,如果执行成功,提示nginx服务正常运行,如果执行不成功,启动nginx服务,保存后运行nginx.sh脚本,[root@shell~]#bashnginx.shnginx服务未运行,正在启动并设置开机自启...Createdsymlink/etc/systemd/system/multi-user.target.wants/nginx.service→/usr/lib/systemd/system/nginx.service.nginx服务已成功启动并设置开机自启由于nginx服务还没有启动,所以脚本做出了提示并自动启动了nginx服务,再次运行nginx.sh脚本,如下所示。[root@shell~]#bashnginx.shnginx服务运行正常由于nginx服务已经启动了,所以做出了正确提示。四、使用智能体编写系统健康状态检查脚本1.向大语言模型提问打开“智能运维助手”智能体,在连接大语言模型和IP地址为192.167.200.30的shell服务器之后,在“问题输入”提示框中输入问题,如下所示。“在/root目录下创建一个名称为health.sh的shell脚本,检查cpu、内存、磁盘的利用率,当cpu、内存或者磁盘的利用率超过80%时,输出告警信息,编辑时不要使用```bash和```,创建完成后,通过计划任务每10分钟执行一次该脚本。”输入完成后,单击“提问”按钮,大语言模型返回命令到终端输出,结果如图7-6所示。图7-6任务7-1大模型返回结果在返回的脚本中,首先统计了CPU、内存和磁盘的利用率,当利用率大于80%时,给出告警提示,并通过计划任务,每10分钟执行一次脚本。2.执行大语言模型返回结果单击“执行命令”按钮,执行大语言模型返回的命令,结果如图7-7所示。图7-7任务7-1执行大模型返回配置3.验证结果(1)运行脚本首先打开自动创建的health.sh脚本,为了显示效果,将内存使用率修改为超高8%后,自动告警,如下所示。if(($(echo"$mem_usage>8"|bc-l)));then保存后,运行health.sh脚本,结果如下所示。[root@shell~]#bashhealth.shWarning:Memoryusageis15.6237%从结果中可以看出,当前的内存使用率大于8%,提示了告警信息,完成后,将8%修改回80%。(2)查看计划任务查看当前的计划任务,如下所示。[root@shell~]#crontab-l*/10****/root/health.sh通过结果发现,已经创建了计划任务,每10分钟执行一次health.sh脚本,可以通过tail-f/var/log/cron查看执行结果,如下所示。[root@shell~]#tail-f/var/log/cronSep1710:38:45shellcrontab[16486]:(root)LIST(root)Sep1710:40:01shellCROND[16790]:(root)CMD(/root/health.sh)※归纳总结教师回顾本节课所讲的知识,并通过测试题的方式引导学生解答问题并给予指导。※布置作业教师通过超星学习通平台布置本节课作业以及下节课的预习作业教学小结本任务中介绍了Shell脚本的基本语法,学习了单分支和多分支程序结构,使用智能体编写了监控系统健康状态的脚本。课题名称项目7使用Shell脚本管理服务器任务7-2编写循环结构程序计划课时4课时教学引入在日常运维工作中,王亮经常需要处理一系列重复性较高的任务,如批量文件操作及检测网络中多台主机的运行状态等。为了减少重复工作,提高运维效率,技术主管要求王亮编写自动化脚本,通过循环结构对这些重复运维任务进行自动化处理。教学目标【知识目标】(1)了解Shell循环结构脚本的功能。(2)掌握for循环和while循环的应用场景。【技能目标】(1)能够编写for循环结构脚本。(2)能够编写while循环结构脚本。【素养目标】(1)通过编写for循环结构脚本,培养学生逻辑思维和问题解决能力。(2)通过编写while循环结构脚本,培养学生通过优化代码提升程序性能的能力。教学重点编写For循环结构脚本教学难点编写while循环结构脚本教学方式任务驱动,案例教学教学过程任务7-2编写循环结构程序※通过直接引入的方式导入新课在日常运维工作中,王亮经常需要处理一系列重复性较高的任务,如批量文件操作及检测网络中多台主机的运行状态等。为了减少重复工作,提高运维效率,技术主管要求王亮编写自动化脚本,通过循环结构对这些重复运维任务进行自动化处理。※新课讲解教师通过PPT的方式讲解。1、Shell循环结构脚本的功能Shell循环流程控制语句通过条件判断进行自动化重复操作。当指定条件成立时,系统会持续执行特定操作,直到条件不再满足时才终止循环,这种机制将人工从繁琐的重复劳动中彻底解放出来,大幅提升工作效率和准确性。2.for循环while循环的应用场景(1)for循环for循环擅长"有多少做多少"的确定性任务,能够精确控制循环范围,特别适合处理有明确边界的数据集合,其典型应用包括以下方面。批量文件处理(如遍历目录下的所有文件进行重命名、格式转换或权限修改)数字序列处理(如执行固定次数的操作或测试)数组元素遍历需要对明确列表进行迭代的任何任务。(2)while循环while循环适合"做到条件满足为止"的动态场景,更适合基于条件动态执行的场景,特别是循环次数不确定的情况。其主要应用包括以下方面。系统监控实时数据处理(如读取不断更新的日志文件)用户交互处理(等待特定输入或确认)需要满足特定条件才终止的长期运行任务二、编写for循环结果脚本1.编写遍历型for循环脚本遍历型for循环用于依次遍历列表中的每个元素,并在变量取到列表中每个值时执行相应的循环体操作。利用遍历型循环可以有效解决许多实际问题,其基本语法格式如下。for变量in列表;do循环体done其中列表可以是定义的序列值、变量、命令、目录、文件等。(1)自定义列表使用Xshell工具登录shell服务器,在/root目录下创建脚本文件for1.sh,输入如下内容。#/bin/bashforiin1234;doecho$idone以上脚本中,自定义了一个整数序列1234,变量i依次取得每个值后,输出变量i的值,保存后运行for1.sh,结果如下所示。[root@shell~]#bashfor1.sh1234(2)将命令结果作为列表在/root目录下创建脚本文件for2.sh,输入以下内容。[root@shell~]#catfor2.sh#!/bin/bashname=$(ls/boot)foriin$name;doecho$idone以上脚本中,使用name变量获取了/boot目录下的内容,然后通过变量i依次取得/root目录下的值,将其输出,保存后运行for2.sh,结果如下所示。[root@shell~]#bashfor2.shconfig-6.6.0-98.0.0.103.oe2403sp2.x86_64dracutefigrub2initramfs-0-rescue-150e54e1dce34ac1a3df0f88467a79d8.imginitramfs-6.6.0-98.0.0.103.oe2403sp2.x86_64.imginitramfs-6.6.0-98.0.0.103.oe2403sp2.x86_64kdump.imgloaderlost+foundsymvers-6.6.0-98.0.0.103.oe2403sp2.x86_64.gzSystem.map-6.6.0-98.0.0.103.oe2403sp2.x86_64vmlinuz-0-rescue-150e54e1dce34ac1a3df0f88467a79d8vmlinuz-6.6.0-98.0.0.103.oe2403sp2.x86_64(3)使用seq命令生成列表通过seq命令可以生成一个指定范围的数值序列,seq命令语法为:seq初始值步长终止值,其中初始值表示序列的起始值,步长定义了每个数值之间的增量,而终止值则是序列的结束值。在/root目录下,创建脚本文件for3.sh,输入如下内容。#!/bin/bashforiin$(seq115);douseradduser$iecho"user$i"|passwd--stdinuser$idone(4)大括号扩展在/root目录下,创建for4.sh,输入以下内容。#!/bin/bashforiin{1..5};doecho"Number:$i"done以上脚本中,使用{1..5}扩展生成12345序列,保存后运行for4.sh,结果如下所示。[root@shell~]#bashfor4.shNumber:1Number:2Number:3Number:4Number:52.编写C语言风格的for循环脚本C语言风格的for循环是一种强大的循环结构,它模仿了C、Java等编程语言中的for循环,语法如下所示。for((初始化;条件判断;步进表达式));do#循环体done(1)求1到100的和在/root目录下创建for5.sh,输入以下内容。#!/bin/bashsum=0for((i=1;i<=100;i++));do((sum=sum+i))doneecho"1到100的和为:$sum"以上脚本中使用for循环初始化了变量i为1,判断i的值小于等于100的时候,运行循环体sum=sum+i,然后执行i++,等同于i=i+1,直到i的值等于101的时候,判断条件i<=100为假,退出循环,打印出sum变量的值,即1到100的和。(2)计算100到999之间的水仙花数水仙花数是指一个n位数,其各位数字的n次方之和等于该数本身,在/root目录下创建脚本文件for6.sh,输入以下内容。#!/bin/bash#计算三位水仙花数for((num=100;num<=999;num++));do#分解各位数字i=$((num/100))#百位j=$((num%100/10))#十位k=$((num%10))#个位#计算各位数字的立方和sum=$((i*i*i+j*j*j+k*k*k))#判断是否为水仙花数if((num==sum));thenecho$numfidone以上脚本循环num变量,从100到999,判断每个数值是否为各位数字的立方和,成立则输出这个数,保存后,运行for6.sh,结果如下所示。[root@shell~]#bashfor6.sh153370371407三、编写while循环结果脚本1.白那些基于条件的while循环脚本基于条件的while循环在指定条件为真时不断执行循环体,直到条件变为假时退出循环,通常用于重复执行某个任务,直到满足退出条件。在/root目录下创建脚本while1.sh,输入以下内容。#!/bin/bashinput=""while[[!$input=~^[0-9]+$]];doread-p"请输入一个正整数"inputdoneecho"您输入的正整数是$input"以上脚本中首先定义了input为空,然后判断input是否为一个正整数,其中=~是正则匹配符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国银河证券股份限公司FICC业务总部招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国铁路广州局集团招聘应届毕业生550人易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国铁路上海局集团限公司招聘62名毕业生三(本科及以上学历)易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国邮政集团公司长春市分公司招聘22人易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国航天科工光量子总体部招聘94人易考易错模拟试题(共500题)试卷后附参考答案
- 第17讲 密度、压强、浮力的综合计算 练习含答案
- 2026中国电信翼康科技限公司招聘10人易考易错模拟试题(共500题)试卷后附参考答案
- 绝缘防腐两不误阴保热熔胶棒材质特性详解
- 2026年银行笔试练习题库包含答案详解【研优卷】
- 2026年期货从业资格之期货投资分析考前冲刺模拟题库(A卷)附答案详解
- 2026年金属非金属矿山(露天矿山)安全管理人员试题附答案详解【考试直接用】
- 2026湖南娄底市市直事业单位高层次和急需紧缺人才招聘集中组考18人备考题库含答案详解(预热题)
- 2026届湖北省武汉市高三四调英语试题(含答案和音频)
- 2025年csco肾癌诊疗指南
- 深度融合与创新:信息技术赋能初中数学教学新范式
- 2026年中级银行从业资格《个人理财》通关测试卷及一套完整答案详解
- 【新教材】外研版(2024)八年级下册英语Unit 1-Unit 6语法练习册(含答案解析)
- 广告制作安装工作制度
- 中国艺术研究院社会招聘试题
- 【《基于UASB-MBR工艺的垃圾渗滤液处理系统工艺计算设计案例》7400字】
- 电商客服方案
评论
0/150
提交评论