02 Shell编程之条件语句(补充实验部分)

1、双分支if语句的补充(实验部分)

例如,要编写一个连通性测试脚本,通过位置参数来提供目标主机地址,然后根据ping检测结果给出相应的提示

(能ping通的,回馈一个信息:该服务器是开启的;如果不能ping通的,回馈另一个信息:该服务器是down掉了)

注:去测连通性的时候,用脚本的方式是最方便的。

具体操作如下:

先用vim编辑器打开一个空文件,如下图:

然后在该文件里编写脚本,按照如下图所示的编写:

写完之后,保存退出vim编辑器。

然后可以测试一下该脚本文件,如下图:

显示192.168.2.149这个服务器是UP开着的。

所以到此就实现了用一个脚本去实现ping服务器连通性的结果。

2、多分支if语句的补充(实验部分)

例如,要求用多分支语句判断考试成绩的优良状态,把考试成绩分为:

优秀(>=80分,且<=100分)、合格(>=60分,且<80分)、不合格(>=0分,且<60分)

补充:read命令——用来提示用户输入信息(通常结合-p选项来使用)

先用vim编辑器打开一个空文件,如下图所示:

然后在文件里按下图所示的编写脚本,编写完成之后再退出vim编辑器:

然后就可以去测试一下该脚本的正确性了,如下图:

经上述测试,该脚本是可以正常运行的。

但是问题出现在,如果输入一个大于100的数字,会提示成绩不合格的字样。如下图:

那这种情况如何改善呢?

把脚本打开,在if后面再加一个elif判断即可。如下图:

先打开脚本ccc.sh:

然后在里面修改一下内容,如下图:

然后保存退出,再测试一下:

经测试,这样脚本就可以正常符合要求了。

多分支if语句,在编写的时候要注意严谨性。但是如果当要判断的条件太多的时候,再用if语句就会显得很复杂了。

3、case分支语句

case语句可以使脚本程序的结构更加清晰、层次分明。

case语句从某种意义上说,可以替换if语句。

3.1 case语句的结构

case语句主要用于:当某个变量存在多种取值,需要对其中的每一种取值分别执行不同

的命令序列。

注:这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,而case语句只是判断一个变量的不同取值。

case分支语句的语法结构如下图:

上图中,关键字case后面跟的是变量值——即$变量名。

整个分支结构包括在case......esac之间,中间的模式1、模式2、......*分别对应变量的不同取值(程序期望的取值)

注:*作为通配符,可匹配任意值。

case语句的执行流程:

首先使用“变量值”与模式1进行比较,

若取值相同,则执行模式1后面的命令序列,直到遇见双分号;;后跳转至esac——表示分支结束;

若与模式1不相匹配,则继续与模式2进行比较,若取值相同,则执行模式2后面的命令序列,直到遇见双分号;;后跳转至esac——表示分支结束;

.........以此类推;

若找不到任何匹配的值,则执行默认模式*)后的命令序列,直到遇见esac后结束分支。

如下图:

注:使用case分支语句时:

  • case行尾必须为单词in,每一个模式必须以右括号)结束;
  • 双分号;;——表示命令序列的结束;
  • 模式字符串中,可以用方括号表示一个连续的范围,如[0-9]

还可以用竖杠符号|表示或,如A|B

  • 最后的*)表示默认模式,其中的*相当于通配符

3.2 case语句的应用

3.2.1 检查用户输入的字符类型

要求:提示用户从键盘输入一个字符,通过case语句来判断该字符是否为字母、数字或者其他控制字符,并给出相应的提示信息。

如下图所示,先用vim编辑器打开一个空脚本文件ddd.sh,如下图所示:

然后在vim编辑器里,按照下图中所示进行编写脚本:

编写完成后保存并退出vim编辑器,然后用bash ddd.sh命令来测试一下:

经测试,编写的脚本满足了上述的要求。

3.2.2 编写系统服务脚本

利用脚本去重启、停止、启动进程或查询进程的状态。

要求:通过位置变量$1指定的start、stop、restart、satatus控制参数,分别用来启动、停止、重启sleep进程,以及查看sleep进程的状态。

补充:sleep——休眠程序,执行sleep 5命令会在执行界面卡5秒钟。如下图:

在sleep +X秒 +&,这个命令表示sleep程序在后台运行的。

先用vim编辑器打开一个空的脚本文件eee.sh,如下图:

然后在vim编辑器里按照下面的图片中所示,编写脚本:

然后保存并退出vim编辑器,下面来测试一下脚本的功能是否能正常实现:

而当测试restart命令的时候,有两种实现的方式:

第一种是使用bash的命令来测试该脚本,如下图:

第二种是使用绝对路径./的方式来测试,如下图:

补充:脚本在运行的时候,一定要把该脚本的绝对路径给加上去,如下图:

因为在脚本中:

所以如果执行该脚本的时候加上绝对路径后,就相当于:

拓展部分:

一、把服务添加为系统服务

在Linux中,控制服务通常有两种方式:

(1)systemctl stop/start/restart+服务名

(2)sudo service +服务名+start/restart/stop/status

在上面所用到的eee.sh脚本文件里做一些修改,如下图:

先用vim编辑器打开编写过的eee.sh文件,如下图:

然后在打开的脚本文件里添加下图中圈出的两行内容:

添加完成之后,保存并退出vim编辑器。然后执行下图中得命令:

要提前把脚本文件eee.sh拷贝到/etc/init.d目录下,才可以执行上面的那个chkconfig --add eee.sh命令。因为只有把脚本文件拷贝到这里,该脚本文件下对应的服务才有可能成为系统服务。

如下图:

注:chkconfig --add eee.sh命令的作用是将你的脚本文件eee.sh所对应的服务,添加为系统服务。

拷贝过来之后,可以再执行一次上面的chkconfig --add eee.sh命令。

然后,就可以用service命令进行测试了,如下图:

测试正常,说明脚本文件eee.sh所对应的服务已经被添加为系统服务了。而且在执行测试的时候也不需要在查找输入该脚本的绝对路径了,直接就可以执行。

注:这时候的eee.sh已经不再是一个脚本了,它已经变成了你系统中的一个服务了。

补充:如何把一个服务设置为开机自启呢?

用chkconfig + eee.sh +on这个命令,这样就把该服务设置为开机自启了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钓鱼网站开发原理(社会工程学)

钓鱼网站开发原理&#xff08;社会工程学&#xff09; 一、课程简介1、课程大纲2、课程目标3、知识储备 二、钓鱼网站简介1、什么是钓鱼网站2、开发&原理 三、PHP环境搭建1、简介2、自动安装MySQL/apache/PHP3、安装navicat 四、PDO表单入库案例1、语法2、显示登录表单3、入…

浔川AI社宣布正式开创“浔川AI助手”——浔川AI社

这是浔川AI社的标志。 2024.6.22晚8点35分宣布&#xff0c;浔川AI社正式开创“浔川AI助手” 全面发展。 据浔川AI社报道称‘“浔川AI助手”内容包含全部&#xff0c;写作、聊天......都有。’ 让我们敬请期待&#xff01;

【JAVA】精致的五角星

输出的这幅图像中&#xff0c;一颗精致的金色五角星跃然于深红色背景之上&#xff0c;绽放出迷人的光彩。 要绘画这颗五角星&#xff0c;首先要了解五角星的构造和角度问题。我们可以分为内五边形&#xff0c;和外五边形。内五边形从他的中心到每个外点&#xff0c;连接起来&am…

ECharts词云图(案例一)+配置项详解

ECharts词云图&#xff08;案例一&#xff09;配置项详解 ECharts 是一款由百度团队开发的基于 JavaScript 的开源可视化图表库&#xff0c;它提供了丰富的图表类型&#xff0c;包括常见的折线图、柱状图、饼图等&#xff0c;以及一些较为特殊的图表&#xff0c;如词云图。从版…

带百分比的进度条控件(ProgressBar)源码

带百分比的进度条控件&#xff08;ProgressBar&#xff09;&#xff1a; 源码下载地址&#xff1a;https://download.csdn.net/download/wgxds/89472915

打破数据分析壁垒:SPSS复习必备(六)

一、数据的报表呈现 1.报表概述 (1).SPSS中的报表功能 1&#xff09;Base 模块 2&#xff09;Custom Tables 模块 3) Original Tables 模块 (2).报表的基本绘制步骤 步骤一:确定基本结构 步骤二:使用对话框绘制表格的基本结构 步骤三:完善细节 步骤四:添加其余变…

使用golang与智能合约进行交互

文章目录 使用golang与智能合约进行交互一、go-ethereum整体思路二、使用ERC-20实操1. 编译和部署erc-20合约2. 获取合约abi文件 (准备好合约的abi文件 abi.json)使用hardcat生成的json文件中获取3. 准备好solc和abigen工具4. 使用工具生成go代码5. go代码编写连接到区块链网…

Javase.图书管理系统基本框架

图书管理系统基本框架 1.核心类介绍2. book包详解2.1 Book 类2.1.2 代码展示2.1.2 代码解析 2.2 BookList 类2.2.2 代码展示2.2.2 代码解析 2.3Book类和BookList类的联系 3. 用户角色与管理3.1 User 类3.1.1 代码展示3.1.2 代码解析 3.2 adminUser 类3.2.1 代码展示3.2.2代码解…

我做了个Hexo博客

最近花了两个周末的时间边学变做Hexo博客&#xff0c;最终成品地址如下&#xff1a; https://blog.mybatis.io 下面先说说做博客的经过&#xff0c;想做Hexo博客一开始是因为看到了 hexo-theme-icarus 主题&#xff0c;这个主题样式如下&#xff1a; 首页 内容页 这个主题是…

KEIL5软件仿真观察PIN脚电平(软件仿真逻辑分析仪的使用)

仿真前的调整&#xff1a; 例&#xff1a;STM32F103C8T6 &#xff08;如果是F4的板子稍微对着修改一下&#xff09; 逻辑分析仪的使用 输入 PORTA.6( PORAT(哪一组).(哪一个引脚) )

通过rpm命令查看特定rpm包的安装时间

通过rpm命令查看特定rpm包的安装时间 命令解读 [aqjgmaster ~]$ rpm -q --qf "%{INSTALLTIME}\n" kernel 1681468253 [aqjgmaster ~]$ [aqjgmaster ~]$ date -d rpm -q --qf "%{INSTALLTIME}\n" kernel Fri Apr 14 18:30:53 CST 2023 [aqjgmaster ~]$ [a…

已解决java.rmi.AlreadyBoundException异常的正确解决方法,亲测有效!!!

已解决java.rmi.AlreadyBoundException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 分析错误日志 检查重复绑定情况 解除已有的绑定 优化代码逻辑 使用同步机制 总结 …

leetcode1047删除字符串中的所有相邻重复项

本文主要讲解删除字符串中的所有相邻重复项的要点与细节&#xff0c;按照步骤思考更方便理解 c代码如下&#xff0c;末尾 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#x…

基于格网的边缘点检测(python)

1、背景介绍 前文已介绍对点云进行格网处理&#xff0c;可以计算平面点云面积、格网拓扑关系构建&#xff0c;相关博客如下&#xff1a; &#xff08;1&#xff09;点云格网过程可视化&#xff08;C PCL&#xff09;-CSDN博客 &#xff08;2&#xff09;平面点云格网过程及可…

Kimichat使用案例026:AI翻译英语PDF文档的3种方法

文章目录 一、介绍二、腾讯交互翻译TranSmart https://transmart.qq.com/三、沉浸式翻译三、谷歌网页翻译一、介绍 短的文章,直接丢进kimichat、ChatGPT里面很快就可以翻译完成,而且效果很佳。但是,很长的PDF文档整篇需要翻译,怎么办呢? 二、腾讯交互翻译TranSmart https…

VScode如何调节编辑器字体大小

首先&#xff0c;在vscode界面&#xff0c;依照顺序输入“Ctrlk”、“Ctrls”&#xff0c;即可进入键盘快捷方式设定界面。&#xff08;如下图所示&#xff09; 其次&#xff0c;在搜索框中输入“缩小”或者“放大”&#xff0c;就会出现对应的“缩小编辑器字体”或者“放大编…

算法刷题总结

1. 排序算法 1.1 快速排序算法 public abstract class Sort<T extends Comparable<T>> {public abstract void sort(T[] array);protected boolean less(T first, T two) {return first.compareTo(two) < 0;}protected void swap(T[] array, int i, int j) {T…

Midjourney绘画提示词精选:提升AI艺术创作的秘诀

引言 在AI艺术创作领域&#xff0c;MidJourney作为一款强大的绘画生成工具&#xff0c;受到了越来越多艺术家和设计师的青睐。通过提供简洁但富有创意的提示词&#xff0c;可以帮助MidJourney生成令人惊叹的艺术作品。在本文中&#xff0c;我们将分享一些精选的MidJourney绘画…

Python数据分析-糖尿病数据集数据分析

一、研究背景介绍 糖尿病是美国最普遍的慢性病之一&#xff0c;每年影响数百万美国人&#xff0c;并对经济造成重大的经济负担。糖尿病是一种严重的慢性疾病&#xff0c;其中个体失去有效调节血液中葡萄糖水平的能力&#xff0c;并可能导致生活质量和预期寿命下降。。。。糖尿…

CentOS系统查看版本的各个命令

cat /etc/centos-release 查看CentOS版本 uname -a 命令的结果分别代表&#xff1a;当前系统的内核名称、主机名、内核发型版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称 cat /proc/version 命令用于查看Linux内核的版本信息。执行该命令后&#xf…