shell编程之条件语句(if)

目录

一、条件测试

1.1文件测试和整数测试

1.1.1 test命令

1.1.2 文件测试

1.2.3 整数值比较

1.2 字符串测试与逻辑测试

1.2.1 字符串比较

1.2.2 逻辑测试

二、if语句

2.1 if单分支语句

2.2 if双分支语句

2.3 if多分支语句

三、case分支语句


一、条件测试

1.1文件测试和整数测试

1.1.1 test命令

  • 测试表达式是否成立,若成立返回0,否则返回其他数值

格式1:test  条件表达式

格式2: [ 条件表达式 ]

1.1.2 文件测试

格式:

[ 操作符 文件或者目录 ]

  • 常用的测试操作符
选项说明

-e

测试目录或文件是否存在(Exist)

-d

测试是否为目录(Directory)。

-f

测试是否为文件(File)。

-r

测试当前用户是否有权限读取(Read)。

-w

测试当前用户是否有权限写入(Write)。

-x

测试是否设置有可执行(Excute)权限。

示列:

4

1.2.3 整数值比较

格式:

[ 整数变量1 操作符 整数变量2 ]

常用操作符:

操作符说明符号
-eq等于==
-ne不等于!=
-gt大于>
-lt小于<
-le小于等于<=
-ge大于等于>=

1.2 字符串测试与逻辑测试

1.2.1 字符串比较

格式1:

[ 字符串1 = 字符串2 ] 或 [ 字符串1 == 字符串2 ]

[ 字符串1 != 字符串2 ]

示列:

[root@localhost ~]# test yht == dxl
[root@localhost ~]# echo $?
1[root@localhost ~]# test yht == yht
[root@localhost ~]# echo $?
0

 格式2:

[ -z 字符串 ] #检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串

[ -n 字符串 ] #检查是否有字符串存在

1.2.2 逻辑测试

格式:

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

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

常用操作符:

操作符说明

-a或&&

逻辑与,“而且”的意思,前后条件需都成立

-o或||

逻辑或,“或者”的意思,只需前后条件中一个成立

!

逻辑否

示列:

[ $a -ne 1 ] && [ $a != 2 ] 等同于 [ $a -ne 1 -a $a != 2 ]

&&、||操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错

二、if语句

2.1 if单分支语句

if 条件测试操作格式:

if 条件测试操作

then

命令序列

fi

流程图:

连写格式:

if [ 3 -gt 2 ]; then echo "ok"; fi

2.2 if双分支语句

if 条件测试操作

then

命令序列 1

else

命令序列 2

fi

流程图:

示列:

#!/bin/bash
ping -c 3 -i 0.5 -W 2 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "$1 online"
else
echo "$1 off"
fi

2.3 if多分支语句

if 条件测试操作 1

then

命令序列 1

elif 条件测试操作 2

then

命令序列 2

[else]

[命令序列 3]

fi

流程图:

 示列:

#!/bin/bash
read -p "请输入您的分数(0-100): " score
if [ $score -ge 85 ] && [ $score -le 100 ]
then
echo "$score 分,优秀!"
elif [ $score -ge 70 ] && [ $score -le 84 ]
then
echo "$score 分,合格!"
else
echo "$score 分,不合格!"
fi

 

三、case分支语句

结构:

case 变量值 in

模式 1)

命令序列 1

;;

模式 2)

命令序列 2

;;

……

使用 case 分支语句时,有几个值得注意的特点如下所述:

  • case 行尾必须为单词“in”,每一模式必须以右括号“)”结束。

  • 双分号“;;”表示命令序列的结束。

  • 模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号“|”表示或,如“A|B”。

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

示列:

#!/bin/bash
read -p "请输入您的分数(0-100): " score
[[ $score -ge 80 && $score -le 100 ]] && a="great"
[[ $score -ge 60 && $score -lt 80 ]] && a="standard"
[[ $score -ge 0 && $score -lt 60 ]] && a="false"
case $score in
great)echo "$score 分,优秀!"
;;
standard)echo "$score 分,合格!"
;;
false)echo "$score 分,不合格!"
;;
*)echo "输入有误!"
esac

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

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

相关文章

微信小程序背景图无法显示

文章目录 不知道有没有人跟我一样&#xff0c;刚接触微信小程序&#xff0c;在写代码的时候&#xff0c;背景图莫名奇妙不显示。 网上有很多解决方法&#xff0c;比如转 base64 &#xff0c;网络图片地址等等&#xff0c;但我觉得都太麻烦了&#xff0c;这里直接给出我的解决方…

新生在线分班查询,用这个小程序制作仅需一分钟!

今天许多学校已陆续开学&#xff0c;老师们又开始忙碌起来。他们需要将新生的分班信息逐一通知给每位家长&#xff0c;这不仅是一项繁琐的工作&#xff0c;而且效率也不高。传统的方法是通过电话、短信或邮件一一通知&#xff0c;这不仅耗时耗力&#xff0c;还容易出现信息传递…

《大道平渊》· 拾玖 —— 做产品的四大境界

《大道平渊》 【顶级】虚空造物, 无中生有。 【上等】带脑子抄, 模仿, 改进, 超越。 【中等】无脑抄, 一模一样, 疯狂内卷。 【下等】抄都能抄错, 蠢货。 // 题外话&#xff1a;呵呵&#xff0c;很多人照着抄都能抄错&#xff0c;给了模板不会用&#xff0c;项目拆解出来嚼…

React中实现antd自定义图标,鼠标悬浮变色

借助 antd 的 tooltip 组件来实现 hover 时变色的效果 1.新建组件 自定义图标一般在iconfont上面获取&#xff0c;复制下来的svg代码&#xff0c;切记要删除 fill 属性后添加到组件中 import { Tooltip } from "antd"; import React from "react";const …

springboot篇

文章目录 1.题目问答2.配置详情2.1配置文件2.2多环境配置2.3自定义参数2.4命令行参数2.5加载顺序 3.Starter POMs4.监控与管理—actuator4.1. 应用配置类4.1.1./autoconfg4.1.2. /beans4.1.3. /configprops4.1.4 /env4.1.5./mappings4.1.6./info 4.2. 度量指标类4.2.1. /metric…

oceanbase 常用视图查询记录

测试环境&#xff1a;1-1-1 OceanBase 企业版3.2.4.4 查看租户的 Context 和 Modudle 内存 SELECT tenant_id, svr_ip, ctx_id, ctx_name, mod_name, count, round(HOLD / 1024 / 1024, 2) hold_mb, round(used / 1024 / 1024, 2) used_mb FROM oceanbase.__all_virtual_memory…

AI问答:.NET核心组成概要、程序运行步骤和查询SDK版本的方法

.NET三大组成 ①Runtime (运行时)&#xff1a; CLR&#xff1a;公共语言运行时&#xff0c;执行程序、内存管理、垃圾回收&#xff08;GC&#xff09;、安全性检查、异常处理&#xff0c;是跨平台的关键要素。 JIT&#xff1a;实时编译器&#xff0c;将中间语言…

Java性能优化传奇之旅--Java万亿级性能优化之Java 性能优化传奇:热门技术点亮高效之路

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的博客,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实…

持续集成与持续部署(CI/CD)的深入探讨

在现代软件开发中&#xff0c;持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;已成为不可或缺的实践。这些方法旨在加快软件交付的速度&#xff0c;同时提高软件的质量和稳定性。通过CI/CD&#xff0c;开发团队可以频繁地将代码更改集成到主分支&…

Windows 下载安装RabbitMQ

环境描述 windows10 Erlang 26.2.x 版本 RabbitMQ 3.13.7 因为RabbitMQ是Erlang语言开发的&#xff0c;所以必须安装 Erlang RabbitMQ官网链接: https://www.rabbitmq.com/docs/which-erlang 1.下载并安装Erlang 26.2.5 1.1下载Erlang 26.2.5 https://erlang.org/dow…

谁便宜就选谁---基于成本的优化

什么是成本 我们之前老说MySQL执行一个查询可以有不同的执行方案&#xff0c;它会选择其中成本最低&#xff0c;或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的&#xff0c;其实在MySQL中一条查询语句的执行成本是由下面这两个方面组成的&a…

数据结构:(LeetCode101)对称二叉树

给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; 树中节点数目在范围…

基于分布式计算的电商系统设计与实现【系统设计、模型预测、大屏设计、海量数据、Hadoop集群】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目展示项目介绍 目录摘要Abstract1 引言1.1 研究背景1.2 国内外研究现状1.3 研究目的1.4 研究意义 2 关键技术理论介绍2.1 Hadoop相关组件介绍2.2 分布式集群介绍2.3 Pyecharts介绍2.4 Fl…

真北老王 8 月小结:是战士,是爱人

2024年进度条&#xff1a;■■■■■■■■□□□□ 跑步&#xff1a; 八月暑假带娃&#xff0c;只跑了 83 公里。首次一个人的半马 2 小时 45 分。五公里突破 31 分钟。实践跑步、徒手健身、爬楼梯、跳绳混合运动。报了顺德半马&#xff0c;等抽签。 读书&#xff1a; glenwan…

网络基础:理解IP地址、默认网关与网段(IP地址是什么,默认网关是什么,网段是什么,IP地址、默认网关与网段)

前言 在计算机网络中&#xff0c;IP地址、默认网关和网段&#xff08;也称为子网&#xff09;之间有着密切的关系。它们是网络通信中的至关重要的概念&#xff0c;但它们并不相同。这里来介绍一下它们之间的关系&#xff0c;简单记录一下 一. IP地址 1. 介绍 IP 地址&#xf…

抽奖项目技术亮点

活动是通过秒杀领取的。&#xff08;即&#xff1a;活动对应着某一商品&#xff09; 这里超卖指&#xff1a;对于一个活动它的参与量有数量限制&#xff0c;就是活动的库存&#xff0c;当活动的领取数大于活动库存总量&#xff0c;就是超卖 用户秒杀参与活动的资格&#xff08;…

ubuntu通过smba访问华为设备

文章目录 ubuntu通过smba访问华为设备华为设备设置ubuntu设置访问测试 ubuntu通过smba访问华为设备 华为设备设置 华为设备在华为分享一栏下有共享至电脑的选项&#xff0c;打开即可&#xff0c;这里会创建用户名和密码进入设置 -> 关于手机/平板电脑 -> 状态信息&…

HCS-网络服务

一、华为云Stack网络服务概览 1.网络服务包括&#xff1a;虚拟私有云、弹性负载均衡、弹性IP、网络ACL、虚拟专用网络、云专线、VPC终端节点、云解析 2.华为云Stack网络服务全景图&#xff1a; 二、云上通用网络服务 1.虚拟私有云 虚拟私有云&#xff08;Virtual Private Clo…

基于yolov8的道路病害道路裂缝道路坑洞检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的道路病害检测系统&#xff0c;特别是针对道路裂缝和坑洞的检测&#xff0c;是一种高效、准确的智能解决方案。该系统利用YOLOv8这一先进的深度学习算法&#xff0c;通过深度神经网络对图像进行特征提取和分类&#xff0c;实现对道路病害的实时检测和…

华为AC旁挂二层组网配置详解:从DHCP部署到无线业务配置,完成网络搭建

组网需求 AC组网方式&#xff1a;旁挂二层组网。 DHCP部署方式&#xff1a; AC作为DHCP服务器为AP分配IP地址。 防火墙作为DHCP服务器为STA分配IP地址。 业务数据转发方式&#xff1a;直接转发。 网络拓扑图 对于旁边路直接转发&#xff0c;优点就是数据流量不经过AC&…