Shell编程之条件语句

目录

一、条件测试

1)test命令

​编辑

 2)文件测试

常用的测试操作符

​编辑

 4)整数值比较

常用的测试操作符

6)逻辑测试

常用的测试操作符

7)三元运算符

二、if语句

1)单分支结构

2)双分支结构

​编辑

3)多分支结构

4)内嵌if语句 

三、case分支语句


一、条件测试

1)test命令

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

格式2:[ 条件表达式 ]

 2)文件测试

[ 操作符 文件或目录 ]

常用的测试操作符

操作符作用

-e

测试指定的文件或者目录是否存在

-f

测试指定对象是否为文件;指定的文件是否存在

-d

测试指定的对象是否为目录;指定的目录是否存在

-r

测试指定用户是否有读权限

-w

测试当前用户是否有写权限

-x

测试当前用户是否有执行权限

-L

测试文件是否为符号链接(软链接文件)

 4)整数值比较

[ 整数1 操作符 整数2]

常用的测试操作符

操作符含义(整数对比)符号表示(可用于字符串)

-eq

等于

==

-gt

大于

\>

-lt

小于

\<

-ge

大于等于

>=或=>

-le

小于等于

<=或=<

-ne

不等于

!=luo

6)逻辑测试

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

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

常用的测试操作符

操作符符号名称解释
-a&&逻辑且前后条件都要成立
-o||逻辑或只需前后条件中一个成立
逻辑否否定

7)三元运算符

[ 表达式 ] && a || b   #如果表达式为真,则返回a,否则返回b
[ 表达式 ] && a        #如果表达式为真,则返回 a,否则返回表达式的值

二、if语句

If条件判断语句,通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断

1)单分支结构

# 单分支语句
    if [ 表达式 ];then
        语句1
    fi

示例:判断/opt目录下,有没有这个test.sh这个文件,如果没有则进行创建

2)双分支结构

# 双分支if 语句
    if [ 表达式 ];then
        语句1
    else
        语句2
    fi

示例:ping 指定的IP,能ping通echo online,ping不通,则打印 echo offline

ps:&> /dev/null为把输出显示器的信息放入/dev/null黑洞文件中,这样就不会提示

3)多分支结构

# 多支条件语句
    if [ 表达式 ];then
        语句1
    elif [ 表达式 ];then
        语句2
    elif [ 表达式 ];then
        语句2
    fi  

示例:手动输入分数,并根据分数段进行评级,85-100为A,70-84为B,60-59为C,0-59为D

4)内嵌if语句 

即if中嵌套if语句

if [ 表达式 ];then
   if [ 表达式 ];then
        语句1
   else
        语句2
   fi
else
  语句3
fi

示例:提示用户输入100米赛跑的秒数

要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰

如果输入其他字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别

男生进男生组,女生进女生组,如果输入错误请提示错误


三、case分支语句

#Case选择语句,主要用于对多个选择条件进行匹配输出,与if elif语句结构类似,通常用于脚本传递输入参数,打印出输出结果及内容,其语法格式以Case…in开头,esac结尾。语法格式如下:

case 模式名 in
  模式 1)
    命令
    ;;
  模式 2)
    命令
    ;;
  *)
    不符合以上模式执行的命令
  esac

# 每个模式必须以右括号结束,命令结尾以双分号结束。

示例:手动输入分数,并根据分数段进行评级,85-100为A,70-84为B,60-59为C,0-59为D

  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes快速部署

2 Kubernetes快速部署 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署&#xff1a; # 创建一个 Master 节点 $ kubeadm init# 将一个 Node 节点加入到当前集群中 $ kubeadm join <Master节点的IP和…

软件测试职业发展方向有哪些

随着人工智能时代的到来&#xff0c;IT行业受到了越来越多人的重视。软件测试作为把控软件质量必不可少的环节&#xff0c;其重要性可见一斑。 据第三方平台统计&#xff0c;北京软件测试工程师的平均薪资为16.2K&#xff0c;除了一线城市外&#xff0c;随着互联网行业逐渐下沉…

【Copula】考虑风光联合出力和相关性的Copula场景生成(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

【Python入门第五十四天】Python丨NumPy ufuncs

什么是 ufuncs&#xff1f; ufuncs 指的是“通用函数”&#xff08;Universal Functions&#xff09;&#xff0c;它们是对 ndarray 对象进行操作的 NumPy 函数。 为什么要使用 ufuncs&#xff1f; ufunc 用于在 NumPy 中实现矢量化&#xff0c;这比迭代元素要快得多。 它们…

哈希表(底层结构剖析-- 上)

文章目录 哈希表底层结构剖析哈希概念哈希冲突哈希函数 哈希冲突解决办法闭散列( 线性探测 二次探测)开散列 哈希表闭散列方法的模拟实现基本框架有关哈希数据的类插入函数删除函数查找函数增加仿函数将所有数据类型转换为整型 哈希表开散列方法的模拟实现(增加仿函数版) 哈希…

同城跑腿APP开发需具备哪些功能?

移动互联网的飞速发展加上人们生活水平的提高&#xff0c;生活工作闲暇之余&#xff0c;人们不愿意为买药、送文件、取东西、送花、排队等小事浪费时间或者是根本没有时间去处理类似的事情。这个时候就想如果能够花钱请人来替我做这些事就好了&#xff0c;于是同城跑腿就在这样…

S/MIME电子邮件证书,符合FDA邮件安全要求

美国食品和药物管理局 &#xff08;FDA&#xff09;要求合作伙伴提交或接收电子监管信息时&#xff0c;必须使用数字证书保障通信安全。 01 为什么FDA使用数字证书保障通信安全&#xff1f; 为了维护数据完整性、准确性,有组织地管理文件,FDA为接受机构的电子监管提交设置了电子…

ajax的介绍及使用

ajax的介绍 开发流程 前端 ajax:前后端沟通的桥梁 后端 ajax介绍 ajax叫做异步的Javascript和xml ajax通过浏览器与服务器&#xff08;后端&#xff09;进行少量数据交互&#xff0c;进行页面异步更新&#xff08;网页不会重新加载&#xff09; 优点&#xff1a; 减轻服务器负…

C/C++中的数据结构对齐,#pragma pack() 和 __attribute__

C/C中的数据结构对齐 总览 数据结构对齐是指在计算机内存中排列和访问数据的方式。它包含三个独立但相关的问题&#xff1a;数据对齐&#xff08;data alignment&#xff09;&#xff0c;数据结构填充&#xff08; data structure padding&#xff09;和打包&#xff08;pack…

1.2和1.3、GCC

1.2和1.3、GCC 1.2和1.3、GCC1.2.1、什么是GCC1.2.2、编程语言的发展1.2.3、GCC工作流程1.2.4、gcc和g的区别1.2.5、GCC常用参数选项实际操作①接下来进行预处理操作&#xff08;test.c为需要预处理的源代码&#xff0c;test.i为要生成的目标代码&#xff09;②汇编操作&#x…

【Linux】二、Linux的基本指令

1、ls指令 语法 &#xff1a; ls [ 选项 ][ 目录或文件 ] 功能 &#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; &#xff08;1&#xff09;、-a 列出目录下的所有文件&#x…

按照条件向Spring容器中注册bean

1.Conditional注解概述 Conditional注解可以按照一定的条件进行判断&#xff0c;满足条件向容器中注册bean&#xff0c;不满足条件就不向容器中注册bean。 package org.springframework.context.annotation;import java.lang.annotation.Documented; import java.lang.annota…

基于 Python 的 Meta AI —— SAM

Segment Anything Model&#xff08;SAM&#xff09;是 Facebook 的一个 AI 模型&#xff0c;旨在推广分割技术。在我们之前的文章中&#xff0c;我们讨论了 SAM 的一般信息&#xff0c;现在让我们深入了解其技术细节。SAM 模型的结构如下图所示&#xff0c;图像经过编码器得到…

Leetcode-day4【88】【167】【125】【345】

文章目录 88. 合并两个有序数组题目解题思路解题思路【学习】尾插入法 167. 两数之和 II - 输入有序数组题目解题思路 125. 验证回文串题目解题思路 345. 反转字符串中的元音字母题目解题思路 88. 合并两个有序数组 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums…

修改DaemonSet 的/args参数后多个pod重启的顺序

理论 当您修改了DaemonSet的/args参数时&#xff0c;DaemonSet控制器会自动触发Pod的滚动更新。滚动更新的过程是逐个将旧的Pod删除并创建新的Pod&#xff0c;以确保应用程序的高可用性和稳定性。 在进行滚动更新时&#xff0c;DaemonSet控制器会按照以下步骤逐个重启Pod&…

问卷中多选题如何分析?

一、案例与问卷 本研究选取大学生作为研究对象&#xff0c;旨在通过理财认知、理财现状、理财偏好三个方面&#xff0c;对大学生理财产品了解情况、使用需求进行调查。本次问卷共分为四个部分&#xff1a;第一部分共5道题&#xff0c;为基本信息题&#xff1b;第二部分共3道题…

【Linux高性能服务器编程】I/O复用的高级应用

文章目录 一、基于 select 的非阻塞 connect二、基于 poll 的聊天室程序2.1 客户端2.2 服务器 三、基于 epoll 实现同时处理 TCP 和 UDP 服务 一、基于 select 的非阻塞 connect connect系统调用的 man 手册中有如下一段内容&#xff1a; EINPROGERESS The socket is nonblock…

结构型模式-适配器模式

适配器模式 概述 如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑&#xff0c;手机在当地不能直接充电。所以就需要一个插座转换器&#xff0c;转换器第1面插入当地的插座&#x…

【java笔记】java多线程

目录 一、概念 1.1 什么是进程&#xff1f; 1.2 什么是线程&#xff1f; 1.3 什么事多线程&#xff1f; 1.4 进程和线程的关系 二、线程对象的生命周期 三、实现线程有两种方式 3.1 继承 java.lang.Thread&#xff0c;重写 run方法 3.2 实现 java.lang.Runnable 接口…

图像描述算法排位赛:SceneXplain 与 MiniGPT4 谁将夺得桂冠?

如果你对图像描述算法的未来感到好奇&#xff0c;本场“图像描述算法排位赛”绝对是你不能错过的&#xff01;在这场较量中&#xff0c;SceneXplain 和 MiniGPT-4 将会比试&#xff0c;谁将摘得这场比赛的桂冠&#xff1f; 背景介绍 在上篇文章中&#xff0c;我们介绍了图像描述…