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,一经查实,立即删除!

相关文章

浔川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).报表的基本绘制步骤 步骤一:确定基本结构 步骤二:使用对话框绘制表格的基本结构 步骤三:完善细节 步骤四:添加其余变…

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; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 分析错误日志 检查重复绑定情况 解除已有的绑定 优化代码逻辑 使用同步机制 总结 …

基于格网的边缘点检测(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…

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

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

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

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

Springboot整合MinIO实现系统文件的便捷式管理实例

一、MinIO简介 1.基础描述 MinIO 是一个高性能的对象存储系统&#xff0c;用于存储大量非结构化数据。它以简洁、高效、可靠和高扩展性著称&#xff0c;能够胜任各种数据密集型任务。MinIO 采用了与 Amazon S3 兼容的 API&#xff0c;使得用户无需额外学习即可上手使用。下面…

DNF手游攻略:云手机辅助流光星陨刀详细攻略大全!

DNF手游中&#xff0c;流光星陨刀是鬼剑士的专属神器之一&#xff0c;拥有快速的攻击速度和优秀的物理与法术攻击属性&#xff0c;因其出色的性能和未来升级的潜力&#xff0c;成为广大玩家关注的焦点。 流光星陨刀的背景与起源 流光星陨刀作为鬼剑士的标志性武器之一&#xf…

STM32单片机开发入门(十)SSCOM串口通信助手软件安装及使用提供软件网盘链接

文章目录 一.概要二.SSCOM软件下载安装三.串口通讯配置及应用实例1.串口通讯基本配置2.字符串数据发送和接收的配置操作3.16进制数据发送和接收的配置操作4.定时自动发送数据配置操作5.wifi模块AT指令调试配置操作6.用串口烧录STM32单片机代码配置操作 四.以太网TCP服务器端配置…

【0-1系列】从0-1快速了解搜索引擎Scope以及如何快速安装使用(下)

前言 近日&#xff0c;社区版家族正式发布V2024.5版本&#xff0c;其中&#xff0c;社区开发版系列重磅发布Scope开发版以及StellarDB开发版。 为了可以让大家更进一步了解产品&#xff0c;本系列文章从背景概念开始介绍&#xff0c;深入浅出的为读者介绍Scope的优势以及能力…