【Linux】Shell编程之条件语句

news2024/9/22 13:28:47

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、条件测试操作作
    • 1.文件测试
    • 2.整数值比较
    • 3.逻辑测试
  • 二、if语句的结构
    • 1.单分支结构
    • 2.双分支结构
    • 3.多分支结构
  • 三、case多分支结构


一、条件测试操作作

test命令

  • 测试表达式是否成立,若成立返回0,否则返回其他数值
格式1: test 条件表达式
格式2:[ 条件表达式 ]

1.文件测试

[ 操作符 文件或目录 ]

常用的测试操作符

  • -d :测试是否为目录 (Directory)
  • -e:测试目录或文件是否存在(Exist)
  • -f:测试是否为文件 (File)
  • -r:测试当前用户是否有权限读取 (Read)
  • -w:测试当前用户是否有权限写入 (Write)
  • -x:测试当前用户是否有权限执行 (eXcute)

2.整数值比较

[ 整数1 操作符 整数2 ]

常用的测试操作符

  • -eq:等于 (Equal)
  • ne:不等于(Not Equal)
  • gt:大于 (Greater Than)
  • lt:小于(Lesser Than)
  • le:小于或等于(Lesser or Equal)
  • ge:大于或等于 (Greater or Equal)

3.逻辑测试

格式1:[ 表达式1 ] 操作符[ 表达式2]...
格式2:命令1 操作符 命令2 ...

常用的测试操作符

  • -a或&&:逻辑与,“而且”的意思
  • -o或||: 逻辑或,“或者”的意思
  • !: 逻辑否

二、if语句的结构

1.单分支结构

在这里插入图片描述
示例:
判断/opt目录下,有没有这个ztm.sh这个文件,如果没有创建

在这里插入图片描述
在这里插入图片描述

2.双分支结构

在这里插入图片描述

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

vim test.sh                         #创建并编辑test.sh
#!/bin/bash                         #脚本解释器              
fi [ -e /opt/ztm.sh ]                #输入if条件,-e代表测试文件是否存在
then                                 #then代表然后,符合if条件的才可
if [ -x /opt/ztm.sh ]                #这边是嵌入if,在if循环中又嵌入一个if,-x测试文件权限是否可以执行
then echo "文件存在,有权限“            #若文件权限可执行,则输出文件存在,有权限
then else ”文件存在,无权限“            #若文件权限不可执行,则输出文件存在,不可执行
fi                                   #这个嵌入if的结束用fi结束
else ”文件不存在“                      #这个是我们初始if的不符合条件的项,不符合,则直接输出文件不存在,无需去检测权限
fi                                   #检测结束

在这里插入图片描述
在这里插入图片描述

3.多分支结构

在这里插入图片描述
在这里插入图片描述
示例1:
实验内容是一张0-100分的卷子,在各分段所给的分数评价
在这里插入图片描述
在这里插入图片描述
示例2:
提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,
如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,
男生进男生组,女生进女生组,如果输入错误请提示错误

在这里插入图片描述
在这里插入图片描述

三、case多分支结构

在这里插入图片描述
在这里插入图片描述
示例:
一张百分卷子,给个分段的学生打个评价
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Win10蓝屏错误0x0000007b怎么U盘重装系统?

Win10蓝屏错误0x0000007b怎么U盘重装系统?有用户安装好的电脑系统最近总是会出现蓝屏错误0x0000007b的情况,遇到这样的情况很多用户不懂怎么去进行处理。今天分享一个U盘重装系统的方法,教会你快速解决此问题的方法。 准备工作: 1…

体验 nanoGPT

体验 nanoGPT 1. 使用预训练模型2. 训练自己的模型2-1. 准备训练数据2-2. 模型训练2-3. 模型验证 1. 使用预训练模型 在我们尝试训练自己的模型之前,我们先使用其他人训练好的模型,看看如何在自己的环境中运行聊天机器人。 今天我们使用 GPT4ALL 并从 …

正则匹配x.x.x

\d(\.\d){2} 正则规则 \d 表示一个十进制的数字 [0-9] 匹配加号之前的一次或多次 正则中[]、()、{}的区别 [] 匹配组内任意字符 eg:[1,2,3,a-z]能匹配1、2、3、a到z的任意字符 () 相应的匹配字符串,匹配组,子表达式 eg:(abc|cbd)能匹配…

既然有Map了,为什么还要有Redis?

以下内容转自掘金 作者:哪吒编程 同样是缓存,用map不行吗? Redis可以存储几十个G的数据,Map行吗?Redis的缓存可以进行本地持久化,Map行吗?Redis可以作为分布式缓存,Map只能在同一个JVM中进行缓…

2022 Jiangsu Collegiate Programming Contest I. Cutting Suffix

题目链接 Examples input aa Output 1 input ab Output 0 题目大意: 后缀i是字符串从第i个字符开始到最后的字符字串 定义Wi,j是字符串 后缀i和后缀j的公共前缀(LCP)的长度 现在给你一个全集为1-n的互补集T1,T2 要求题目中求和公式的最小值。 题目要点:…

学习笔记(1 - 01)项目初始化的方案和对比

目录 1,创建项目的方式1.1,两种方式创建的项目比对HbuilderX创建的项目:cli创建的项目 1,创建项目的方式 uniapp提供两种方式创建项目: 通过HbuilderX编辑器创建: 通过vue-cli创建 第一方式只能通过Hbuild…

如何在Facebook上创建一个成功的广告账户?

Facebook广告已成为许多企业吸引客户和推广品牌的主要方式。但是,如果你没有经验或知识,创建一个成功的Facebook广告账户可能会变得相当棘手。在这篇文章中,我将向你介绍如何创建一个成功的Facebook广告账户。 第一步:创建Faceboo…

Lucene和Solr和Elasticsearch区别,全文检索引擎工具包Lucene索引流程和搜索流程实操

文章目录 基本概念什么是全文检索技术全文检索的应用场景搜索引擎站内搜索(关注)文件系统的搜索 Lucene & solr & es介绍区别Solr与Lucene对比ES与Lucene的区别ES与Solr对比 Lucene实现全文检索的流程入门程序需求环境准备数据库脚本初始化Lucen…

ADAS测试方案

一 方案概述 随着5G通讯与互联网的快速发展,智能汽车和ADAS辅助系统的研究与发展在世界范围内也在如火如荼地进行。风丘紧跟时代脚步,经多年积累沉淀,携手整车厂与高校共同研发打造出了一套完整且适用于国内ADAS测试的系统方案。 | ADAS测试…

C/C++每日一练(20230506) 翻转词序、字符金字塔、单词搜索

目录 1. 翻转顺序打印 ※ 2. 字符金字塔 ※ 3. 单词搜索 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 翻转顺序打印 初始化一个字符数组为"Th…

【Java面试八股文】Java基础篇——String+集合+泛型+IO+异常+反射

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 三、String 3.1.String常量池 3.2.请你说说String类 3.3.new String("abc")创建了几个字符串对象? 3.4…

双线性插值(Bilinear interpolation)原理推导

文章目录 参考资料前言推导先x方向,后y方向先y方向,后x方向 简化后的双线性插值双线性插值的一阶导 参考资料 https://en.wikipedia.org/wiki/Bilinear_interpolation 前言 双线性插值,又称为双线性内插。在数学上,双线性插值是…

chatGPT的对手,Claude注册教程

完美替代chatGPT!Claude注册教程及浅浅的测评 注册 slack 访问地址:https://slack.com/ 点击使用电子邮件注册 建议使用Google邮箱进行登录, 当然使用Google邮箱登录需要使用魔法 登录成功后 创建Slack工作区 我的邀请链接 https://join.…

Ae:绘画工具 - 描边选项

在 Ae 中使用绘画工具(画笔工具、仿制图章工具及橡皮擦工具)时,都会在时间轴面板的绘画 Paint效果中添加“描边选项” Stroke Options,不同的工具有一些不同的属性。 描边选项里的属性主要用于绘画描边之后的调整,并可…

【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】

Leetcode Leetcode -405.数字转换为十六进制数Leetcode - 409.最长回文串 Leetcode -405.数字转换为十六进制数 题目:给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意 : 十六进制中所有…

flask+opencv+实时滤镜(原图、黑白、怀旧、素描)

简介:滤镜,主要是用来实现图像的各种特殊效果。图像滤镜用于改变图像的视觉效果,使其具有特定的风格。下面是这三种滤镜的详细说明: 1、黑白(Grayscale):黑白滤镜将彩色图像转换为灰度图像&…

全景丨0基础学习VR全景制作,平台篇第17章:热点功能-视频

大家好,欢迎观看蛙色VR官方——后台使用系列课程! 功能说明 应用场景 热点,指在全景作品中添加各种类型图标的按钮,引导用户通过按钮产生更多的交互,增加用户的多元化体验。 视频热点,即点击热点后弹出一个…

Camtasia2023全新版下载安装使用教程

Camtasia2023是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作,并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia具有直观的界面和易于使用的工具,包括添加文本、音频、动…

qt程序设置同时只能运行一个,避免重复打开

qt程序设置同时只能运行一个,避免重复打开 [1] qt程序设置同时只能运行一个,避免重复打开[2] Qt 桌面软件防止重新启动一、创建互斥量二、使用QLockFile 创建锁定文件,通过能否锁定来判断是否已经有程序启动。三、使用 系统信号量 QSystemSem…

基于ATECLOUD的航电系统可灵活扩展自动化测试平台

随着电子技术的发展,航电系统在飞机整机中的重要性飞速提升。据统计,近年来航电系统在飞机出厂成本中的比例直线上升,航电系统研发成本已占飞机研制总成本的近30%,并保持着持续扩大的趋势。测试保障作为航电产业链至关重要的一环&…