if 语句 和 case 语句

文章目录

  • if 语句 和 case 语句
    • 1 if 语句
      • 1.1 条件测试
        • 1.1.1 test表达式
        • 1.1.2 [ ] 和 [[ ]]
      • 1.2 单分支结构
      • 1.3 多分支结构
      • 1.4 嵌套结构
    • 2 case 语句
    • 3 练习
      • 3.1 检查文件是否存在
      • 3.2 整数分组
      • 3.3 用 case语句解压不同后缀名压缩包
      • 3.4 整数奇偶判断
      • 3.5 if 语句 判断主机是否存活
      • 3.6 case 语句控制nginx服务

if 语句 和 case 语句

1 if 语句

1.1 条件测试

先设定一个条件,判断条件是否满足,执行一段特定的代码。

不满足,执行不满足的代码。

通过 $? 的返回码来判断条件为真还是为假( true 或 false )

条件测试的格式:

1.1.1 test表达式
test 表达式-e 判断文件(目录)是否存在-d 判断目录是否存在-f 判断文件是否存在-r 判断当前用户是否有读权限-w 判断当前用户是否有写权限-x 判断当前用户是否有执行权限
整数比较选项符号
等于-eq== (比较数字和字符串)
不等于-ne!= (比较数字和字符串)
大于-gt>
小于-lt<
小于等于-le<=
大于等于-ge>=
1.1.2 [ ] 和 [[ ]]

[ ][[ ]] 是bash自带的。

逻辑测试:

且(-a、&&):表达式中的所有条件都必须成立

或(-o、||):只要表达式中有一个条件成立即可

[[ ]]:双中括号的功能更强大,适用于复杂的表达式,可以避免歧义。

[ ]:功能比较适用于简单的条件判断。

1.2 单分支结构

#单分支格式#if [  判断条件  ]
then 代码
else代码
fi

1.3 多分支结构

#多分支格式#if [  判断条件  ]
then 代码
elif [   ] # 可以无限elif 
then代码
else # 以上条件都为假代码
fi
# if 和 fi要对应

1.4 嵌套结构

# if 语句嵌套格式if [  判断条件  ]
thenif [  判断条件  ]then代码else代码fi
else代码
fi

2 case 语句

#基本结构#
case 变量名 in值1)# 匹配值1时执行的代码块;;值2)# 匹配值2时执行的代码块;;值3)# 匹配值3时执行的代码块;;*)# 不匹配任何值时执行的代码块,类似于default语句;;
esaccase支持通配符:
* 任意长度任意字符
? 任意单个字符
[0-9] 指定范围内的任意单个字符

3 练习

3.1 检查文件是否存在

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

if [ -e ~/test.sh ]    
thenecho "test.sh存在"if [ -x ~/test.sh ]thenecho "可以执行"elseecho "没有执行权限"fi
elseecho "test.sh不存在"
fi

3.2 整数分组

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

read -p "请输入100米赛跑的秒数:" a            
if [[ "$a" -gt 0 && "$a" -le 10 ]] &> /dev/null
thenecho "恭喜您进入选拔赛!"read -p "请输入性别:" bif [ "$b" ==]thenecho "进入男生组"elif [ "$b" ==]thenecho "进入女生组"elseecho "性别输入错误"fi
elif [ "$a" -gt 10 ] &> /dev/nullthenecho "抱歉,您已被淘汰"
elseecho "请重新输入"
fi

3.3 用 case语句解压不同后缀名压缩包

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

tar -zxvf

tar -jxvf

read -p "请输入压缩包文件名:" a
case $a in
*.tar.gz)tar -zxvf $a -C /opt;;
*.tar.bz2)tar -jxvf $a -C /opt;;
*)echo "压缩包文件后缀名不正确"
esac

3.4 整数奇偶判断

提示用户输入内容,使用 if 语句判断输入的内容是否为整数。判断范围0-100。再判断输入的内容是奇数还是偶数。

read -p "请输入内容:" a                          
if [ "$a" -eq "$a" ] &> /dev/null
thenif [[ "$a" -ge 0 && "$a" -le 100 ]] &> /dev/nullthenif [[ $(($a%2)) -eq 1 ]]thenecho $a"是整数,且为奇数"elseecho $a"是整数,且为偶数"fielseecho $a"超出范围,提示0~100"fi
elseecho $a"不是整数"
fi

3.5 if 语句 判断主机是否存活

用 if 语句判断主机是否存活,保存到/opt/hosts.txt
ping -c 5 不显示ping的过程

read -p "请输入主机IP地址:" a
ping -c 5 $a &> /dev/dull
if [ $? = 0 ]
thenecho "主机存活"echo $a >> /opt/hosts.txt
elseecho "主机不存在"
fi

3.6 case 语句控制nginx服务

用 case 语句控制 systemctl start|stop|restart|status 来管理nginx服务,
要求如果命令选项不对,则提示输入不正确: {start|stop|status|restart}

apt -y install nginx &> /dev/null
read -p "请输入命令选项:" a
case $a in
start)systemctl start nginx;;
stop)systemctl stop nginx;;
restart)systemctl restart nginx;;
status)systemctl status nginx;;
*)echo "命令选项输入不正确"
esac

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

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

相关文章

KF UKF

我需要Kalman 现在&#xff0c;主要是用来处理检测问题情况里的漏检&#xff0c;因为模拟了一段2D&#xff0c; &#xff08;x&#xff0c;y&#xff09;的数据&#xff0c;为了看效果&#xff0c;画的线尽量简单一点&#xff1a; import numpy as np import matplotlib.pyplo…

多品牌摄像机视频平台EasyCVR视频融合平台+应急布控球:打造城市安全监控新体系

在当今快速发展的智慧城市和数字化转型浪潮中&#xff0c;视频监控技术已成为提升公共安全、优化城市管理、增强应急响应能力的重要工具。EasyCVR视频监控平台以其强大的多协议接入能力和多样化的视频流格式分发功能&#xff0c;为用户提供了一个全面、灵活、高效的视频监控解决…

第8章硬件维护-8.2 可维护性和可靠性验收

8.2 可维护性和可靠性验收 可维护性和可靠性验收非常重要&#xff0c;硬件维护工程师在后端发现问题后&#xff0c;总结成可维护性和可靠性需求&#xff0c;在产品立项的时候与新特性一起进行需求分析&#xff0c;然后经过设计、开发和测试环节&#xff0c;在产品中落地。这些需…

医学图像语义分割:前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室

医学图像语义分割&#xff1a;前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室 语义分割网络FCN&#xff1a;通过将全连接层替换为卷积层并使用反卷积上采样&#xff0c;实现了第一个端到端的像素级分割网络U-Net&#xff1a;采用对称的U形编解码器结构&#xff…

如何解决多系统数据重复与冲突问题?

多系统并行运作已成为现代企业的常态。企业通常同时使用ERP、CRM、HR等多个业务系统来管理不同的功能模块。然而&#xff0c;这种多系统环境也带来了一个常见且棘手的问题&#xff1a;数据重复与矛盾。由于各系统独立运行且缺乏有效的集成机制&#xff0c;不同系统间的数据容易…

麒麟时间同步搭建chrony服务器

搭建chrony服务器 在本例中&#xff0c;kyserver01&#xff08;172.16.200.10&#xff09;作为客户端&#xff0c;同步服务端时间&#xff1b;kyserver02&#xff08;172.16.200.11&#xff09;作为服务端&#xff0c;提供时间同步服务。 配置服务端&#xff0c;修改以下内容…

【GPTs】Ai-Ming:AI命理助手,个人运势与未来发展剖析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Ai-Ming主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; defcomplete_sexagenary&#xff08;年&a…

Chainlit快速实现AI对话应用将聊天记录的持久化到MySql关系数据库中

概述 默认情况下&#xff0c;Chainlit 应用不会保留其生成的聊天和元素。即网页一刷新&#xff0c;所有的聊天记录&#xff0c;页面上的所有聊天记录都会消失。但是&#xff0c;存储和利用这些数据的能力可能是您的项目或组织的重要组成部分。 之前写过一篇文章《Chainlit快速…

【动手学深度学习Pytorch】6. LeNet实现代码

LeNet&#xff08;LeNet-5&#xff09;由两个部分组成&#xff1a;卷积编码器和全连接层密集块 x.view(): 对tensor进行reshape import torch from torch import nn from d2l import torch as d2lclass Reshape(torch.nn.Module):def forward(self, x):return x.view(-1, 1, 28…

AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!

文章推荐 AI工具百宝箱&#xff5c;使用Deep Live Cam&#xff0c;上传一张照片就可以实现实时视频换脸...简直太逆天&#xff01; Anychat 这是一款可以与任何模型聊天 &#xff08;chatgpt、gemini、perplexity、claude、metal llama、grok 等&#xff09;的应用。 在页面…

Excel数据动态获取与映射

处理代码 动态映射 动态读取 excel 中的数据&#xff0c;并通过 json 配置 指定对应列的值映射到模板中的什么字段上 private void GetFreightFeeByExcel(string filePath) {// 文件名需要以快递公司命名 便于映射查询string fileName Path.GetFileNameWithoutExtension(fi…

SRP 实现 Cook-Torrance BRDF

写的很乱&#xff01; BRDF&#xff08;Bidirectional Reflectance Distribution Function&#xff09;全称双向反射分布函数。辐射量单位非常多&#xff0c;这里为方便直观理解&#xff0c;会用非常不严谨的光照强度来解释说明。 BRDF光照模型&#xff0c;上反射率公式&#…

[代码随想录Day16打卡] 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树

找树左下角的值 定义&#xff1a;二叉树中最后一行最靠左侧的值。 前序&#xff0c;中序&#xff0c;后序遍历都是先遍历左然后遍历右。 因为优先遍历左节点&#xff0c;所以递归中因为深度增加更新result的时候&#xff0c;更新的值是当前深度最左侧的值&#xff0c;到最后就…

【第七节】在RadAsm中使用OllyDBG调试器

前言 接着本专栏上一节&#xff0c;我们虽然已经用上RadAsm进行编写x86汇编代码并编译运行&#xff0c;但是想进行断点调试怎么办。RadAsm里面找不到断点调试&#xff0c;下面我们来介绍如何在RadAsm上联合调试器OllyDBG进行调试代码。 OllyDBG的介绍与下载 OllyDBG 是一款功能…

WPF MVVM框架

一、MVVM简介 MVC Model View Control MVP MVVM即Model-View-ViewModel&#xff0c;MVVM模式与MVP&#xff08;Model-View-Presenter&#xff09;模式相似&#xff0c;主要目的是分离视图&#xff08;View&#xff09;和模型&#xff08;Model&#xff09;&#xff0c;具有低…

PH热榜 | 2024-11-19

DevNow 是一个精简的开源技术博客项目模版&#xff0c;支持 Vercel 一键部署&#xff0c;支持评论、搜索等功能&#xff0c;欢迎大家体验。 在线预览 1. Layer 标语&#xff1a;受大脑启发的规划器 介绍&#xff1a;体验一下这款新一代的任务和项目管理系统吧&#xff01;它…

【ArcGISPro】使用AI模型提取要素-提取车辆(目标识别)

示例数据下载 栅格数据从网上随便找一个带有车辆的栅格数据 f094a6b1e205cd4d30a2e0f816f0c6af.jpg (1200799) (588ku.com) 添加数据

联通光猫(烽火通信设备)改桥接教程

一、获得超级密码 1.打开telnet连接权限 http://192.168.1.1/telnet?enable1&key9070D3BECD70&#xff08;MAC地址&#xff09;2.连接光猫获取密码 telnet 192.168.1.1 用户名&#xff1a;admin 密码&#xff1a;Fh9070D3BECD70连接成功后 load_cli factory show admin_…

掌握SEO提升网站流量的关键在于长尾关键词的有效运用

内容概要 在现代数字营销中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;被广泛视为提升网站流量的核心策略之一&#xff0c;而其中长尾关键词的运用显得尤为重要。长尾关键词通常由三个或更多个词组成&#xff0c;具有更高的针对性和精确度&#xff0c;可以更好地满足…

【期权懂|个股期权中的备兑开仓策略是如何进行的?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 个股期权中的备兑开仓策略是如何进行的&#xff1f; 个股期权备兑开仓的优点和风险‌&#xff1a; ‌&#xff08;1&#xff09;优点‌&#xff1a;备兑开仓可以增强持股收益&…