Shell脚本攻略:条件语句if、case

news2024/11/26 2:37:02

目录

一、理论

1.条件测试

2.if语句

3.case语句

二、实验

1.实验一

2.实验二

3.实验三

4.实验四

5.实验五

6.实验六

7.实验七


一、理论

1.条件测试

(1)三种测试方法
      ①  test命令测试

      ②  [   ]测试(注意前后需要有空格)

表1 布尔值

booletrue(真)false(假)使用场景
返回码01Linux系统 shell脚本
10Java C

      ③  [[   ]]加强版[   ],测试支持通配符和正则表达式

三种测试方法选项:

表2 条件测试选项

选项功能
-d测试是否为文件夹
-f 测试是否为普通文件
-e测试文件或目录是否存在
-a测试文件或目录是否存在,不建议使用此选项。取反!=时echo  $?是错误的返回值。
-L测试是否为软连接文件
-r判断当前用户是否有读权限,根据实际情况返回结果,不是按ll显示的文件属性权限。
-w判断当前用户是否有写权限,根据实际情况返回结果,不是ll显示的文件属性权限。
-x判断当前用户是否有可执行权限,根据实际情况返回结果,root账户时其他用户有执行权限root账户也有,若其他账户没有执行权限则root也没有。

(2) 正整数值比较

比较方法使用上述三种条件测试:

       ①  test命令

       ②  [ ] 注意前后空格

       ③  [[  ]]注意前后空格

表3 正整数比较选项

选项

功能

-eq比较第一个正整数是否等于(equal)第二个正整数==
-ne

比较第一个正整数不等于(not equal)第二个正整数

!=
-gt比较第一个正整数是否大于(Greate than)第二个正整数>
-lt

比较第一个正整数是否小于(Lesser than)第二个正整数

<
-ge 比较第一个正整数是否大于等于(Greate or equal )第二个正整数
-le比较第一个正整数是否小于等于(Lesser or  equal)第二个正整数

(3)字符串笔记

[ 字符窜1 = 字符窜2 ] 或者 [ 字符窜1 == 字符窜2 ] 判断是否相同

[ 字符窜1 != 字符窜2 ] 判断是否不相同

[ -z "字符串" ] -z:判断字符串是否为空;或者指定的变量是否为空值

[ -n “字符串” ] -n:检查是否有字符串存在

(4)逻辑测试 
      ① 格式1:[ 表达式1 ]  操作符  [ 表达式2 ]

      ② 格式2:命令1    操作符    命令2

操作符:

&&或-a  表示且的意思,前面表达式或命令1为真才会执行操作符后面的表达式2或命令2。一假则为假。

||或-o   表示或的意思,前面表达式1或命令1为真则整个表达式为真,前面表达式为假或命令为假才会执行后面的表达式2或命令2 。一真则为真。

!   逻辑否。


(5)三元运算符

[ 表达式 ] && a || b  等价于if双分支

[ 表达式 ] && a    等价于if单分支

2.if语句

(1)单分支的if语句

 

(2)双分支的if语句

(3)多分支的if语句

3.case语句

if的多分支是逐条判断,相对而言效率会低一些,而case语句,不满足的条件直接跳过,相对执行效率快一些。

 

二、实验

1.实验一

  检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限

(1)脚本截图

(2)运行结果

2.实验二

       要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误

(1)脚本截图

(2)运行结果

 

 

3.实验三

用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录

(1)脚本截图

(2)运行结果

4.实验四

提示用户输入内容,使用if 语句判断输入的内容是否为整数。

(1)脚本截图

(2)运行结果

 

5.实验五

根据上一题再判断输入的内容是奇数还是偶数

(1)脚本截图

(2)运行结果

 

6.实验六

用if 语句判断主机是否存活ping -c 5

不显示ping次数

(1)脚本截图

(2)运行结果

显示ping次数

(1)脚本截图

(2)运行结果

 

7.实验七

 用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,要求如果命令选项不对,则提示 “用法: $0 {start|stop|status|restart}”。

(1)脚本截图 

(2)运行结果

 

 

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

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

相关文章

Java多线程编程

Java多线程编程 前言 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更小的资源开销。这里定义…

新快报:十年聚焦,巨杉数据库打造中国基础软件的“原创力”

广东省级主流媒体新快报策划“非凡十年&#xff0c;广州答卷”专题&#xff0c;关注十年来广州的“原创力量”&#xff0c;作为土生土长的广州基础软件创新企业&#xff0c;巨杉数据库十年聚焦&#xff0c;从零打造原生分布式数据库&#xff0c;获得逾百家金融银行客户认可&…

STM32——SDIO的学习(驱动SD卡)(实战篇)

目录 一、SDIO寄存器 1.1 SDIO电源控制寄存器(SDIO_POWER) 1.2 SDIO时钟控制寄存器(SDIO_CLKCR) 1.3 SDIO参数寄存器(SDIO_ARG) 1.4 SDIO命令寄存器(SDIO_CMD) 1.5 SDIO命令响应寄存器(SDIO_RESPCMD) 1.6 SDIO响应 1..4 寄存器(SDIO_RESPx) 1.7 SDIO数据定时器寄存器(S…

C语言程序设计题/C语言计算机二级考前押题版

C语言程序设计题/C语言计算机二级考试押题版 与 数位 和 数 有关 求max与min 任意四个数 运算符和表达式版本 #include <stdio.h> int main( ) {int a,b,c,d;int max,min;printf("please input 4 integers:");scanf("%d%d%d%d", &a, &b, …

ESP32通过 WiFi 传输视频

概述 这是ESP32 WiFi视频流的入门教程。ESP32-CAM 是一款带有ESP32-S 芯片的小型摄像头模块,除了OV2640 相机和多个用于连接外围设备的 GPIO 外,它还具有一个microSD 卡插槽,可用于存储相机拍摄的图像。 ESP32-CAM 简介 ESP32-CAM 是一款采用ESP32-S 芯片的超小型相机模组…

HP EliteBook 840 G6电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板HP Elitebook 840 G6 处理器Intel(R) Core(TM) i7-8565U CPU 1.80GHz (max 4.60Ghz) Kaby Lake R已驱动 内存SK Hynix 32 GB (2x16) 2…

QT 设计ROS GUI界面订阅和发布话题

QT 设计ROS GUI界面订阅和发布话题 主要参考下面的博客 ROS项目开发实战&#xff08;三&#xff09;——使用QT进行ROS的GUI界面设计&#xff08;详细教程附代码&#xff01;&#xff01;&#xff01;&#xff09; Qt ROS 相关配置请看上一篇博客 首先建立工作空间和功能包&a…

深度学习训练营之船类识别

深度学习训练营之船类识别 原文链接环境介绍前言收获前置工作设置GPU导入图片数据预处理 数据可视化配置数据集数据显示 构建模型模型训练编译训练模型 结果可视化(模型评估)损失值可视化混淆矩阵各项指标评估 原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 …

腾讯云轻量应用服务器的端口怎么开通?

腾讯云轻量应用服务器怎么使用&#xff1f;端口在哪开启&#xff1f;在防火墙中可以开启端口号。 腾讯云轻量应用服务器端口怎么开通&#xff1f;在轻量服务器管理控制台的防火墙中开启端口&#xff0c;如果是CVM云服务器在安全组中开通&#xff0c;阿腾云以轻量应用服务器开通…

Python+Socket实现多人聊天室,功能:好友聊天、群聊、图片、表情、文件等

一、项目简介 本项目主要基于python实现的多人聊天室&#xff0c;主要的功能如下&#xff1a; 登录注册添加好友与好友进行私聊创建群聊邀请/申请加入群聊聊天发送图片聊天发送表情聊天发送文件聊天记录保存在本地中聊天过程中发送的文件保存本地 二、环境介绍 python3.8my…

浅谈 RISC-V 软件开发生态之 IDE

软件开发者是芯片公司非常重要的资产&#xff0c;CPU做出来是不够的&#xff0c;要让更多的软件开发者用这颗芯片才是成功。国际大厂们都有一只较大的软件团队&#xff0c;在做面向开发者的软件工具和SDK等。--张先轶博士&#xff1a;为什么RISC-V需要共建软件生态? 前言 目前…

VsCode终端无法使用conda切换环境的问题

一.问题描述: windows的cmd可以正常使用conda切换环境 为了方便想使用vscode的终端,但是报错: PS C:\Users\admin\Desktop\MyProject> conda activate objection1.8.4 CommandNotFoundError: Your shell has not been properly configured to use conda activate. invocati…

智能排班系统 【管理系统功能、操作说明——下篇】

文章目录 页面与功能展示排班日历月视图&#xff08;按职位查询&#xff09;月视图&#xff08;按员工查询&#xff09;周视图 排班任务管理创建排班计算任务设置任务的排班规则设置工作日客流量导入任务计算查看任务结果发布任务任务多算法计算 页面与功能展示 排班日历 在排…

vcruntime140.dll丢失的解决方法?教你如何修复好dll文件

Vcruntime140.dll文件是Windows操作系统中非常重要的一个动态链接库文件&#xff0c;用于支持使用Microsoft Visual C编译器创建的应用程序的运行。当Windows系统中的vcruntime140.dll文件丢失时&#xff0c;可能会导致某些应用程序无法正常启动。在尝试启动应用程序时&#xf…

Android HCE开发

我们来详细说明一下关于不同模式下的AID响应问题&#xff08;前提&#xff1a;一个手机&#xff0c;手机上有A、B两个HCE APP&#xff0c;通过读卡器向手机发送APDU选择指令&#xff09; 1、A和B的应用AID设置的都是payment模式&#xff0c; 只有手机当前选定的默认支付APP会响…

基于Faster rcnn pytorch的遥感图像检测

基于Faster rcnn pytorch的遥感图像检测 代码&#xff1a;https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0 数据集 使用RSOD遥感数据集&#xff0c;VOC的数据格式如下&#xff1a; RSOD是一个开放的目标检测数据集&#xff0c;用于遥感图像中的目标检测。…

图片类型转换,url,File,Base64,Blob

一&#xff0c;图片url转化为文件 function urlToFile(url, imageName) {return new Promise((resolve, reject) > {var blob nullvar xhr new XMLHttpRequest()xhr.open(GET, url)xhr.setRequestHeader(Accept, image/png)xhr.responseType blobxhr.onload () > {b…

JVM内存模型和结构详解

JVM内存模型和Java内存模型都是面试的热点问题&#xff0c;名字看感觉都差不多&#xff0c;实际上他们之间差别还是挺大的。 通俗点说&#xff0c;JVM内存结构是与JVM的内部存储结构相关&#xff0c;而Java内存模型是与多线程编程相关mikechen。 什么是JVM JVM是Java Virtual …

Redis缓存雪崩及解决办法

缓存雪崩 1.缓存雪崩是指在同- -时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到 达数据库&#xff0c;带来巨大压力。 2.解决方案: ◆给不同的Key的TTL添加随机值 ◆利用Redis集群提高服务的可用性 ◆给缓存业务添加降级限流策略 降级可做为系统的保底…

java程序1补充:从键盘输入圆的半径,求圆的周长和面积(简易与交互两版)

编写一个java程序&#xff0c;从键盘输入圆的半径&#xff0c;求圆的周长和面积&#xff0c;并输出。 要求&#xff1a; &#xff08;1&#xff09;半径仅考虑int型正整数&#xff0c;并综合利用所学较好地处理异常输入&#xff0c;包括非法整数、负整数输入时的处理。输入半…