Shell脚本③条件语句、if命令和case命令

目录

一.条件语句

1.test测试条件表达式

2.整数数值比较

(1)比较两个整数大小

(2)查看系统剩余内存是否低于1024M

3.逻辑测试

4.三元运算符

二.if命令

1.单分支结构

2.双分支结构

3.多分支结构

三.case语句

四.脚本

1.字符识别输入数字or字母(case

2.分数等级分类

3.测试机器是否在线(for、if

4.猜价格小游戏(while、if

5.检查文件是否存在且有执行权限(if

6.赛跑选拔并分组(if

7.解压压缩包(case

8.判断奇数偶数(if


一.条件语句

判断命令是否成功

若$?返回0则成功

若$?返回非0则出现错误

1.test测试条件表达式

格式1:test  [操作符选项]  条件表达式
格式2:[  操作符 条件表达式  ]

常见的测试操作符含义
-d测试是否为目录(directory)
-e测试目录或文件是否存在(Exist)
-f测试是否为文件(File)
-r测试当前用户是否有权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)
-L测试是否为软连接文件
-nt判断文件A是否比文件B新
-ot判断文件A是否比文件B旧
-ef判断两个文件是否为同一文件

方法1:test  [操作符选项]  条件表达式

方法2:[  操作符 条件表达式  ]

2.整数数值比较

格式:
[ 整数1 操作符 整数2 ] 

操作符含义
-eq等于(Equal)
-ne不等于(Not Equal)
-lt小于(Leser Than)
-gt大于(Greater Than)
-le小于或等于(Lesser or Equal)
-ge大于或等于(Greater or Equal)
(1)比较两个整数大小

(2)查看系统剩余内存是否低于1024M

3.逻辑测试

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

-a或&&:逻辑与,“而且”的意思全真才为真

-o或||:逻辑或,“或者”的意思一真即为真

!:逻辑否

4.三元运算符

[  表达式  ] && a || b

当条件表达式为真时,取a值;当条件表达式为假时,取b值

二.if命令

1.单分支结构

格式:
if [ 条件判断式 ]; then#当条件判断成立时,可以进行的命令工作内容
fi 					#这里将if反过来写,结束if语句的意思

2.双分支结构

格式:
if 判断条件; then条件为真的分支代码else条件为假的分支代码fi

3.多分支结构

格式:
if [ 条件判断式 ]; then当条件判断成立时,可以进行的命令工作内容
elif [ 条件判断式二 ]; then当条件判断成立时,可以进行的命令工作内容
else	当上面的条件判断都不成立时,可以进行的命令工作内容
fi 		

三.case语句

格式:
case 变量名称 in
“第一个变量内容”程序段;;
“第二个变量内容”程序段;;
*)不包含第一个变量内容与第二个变量内容的其他程序执行段默认程序段;;
esac		

四.脚本

1.字符识别输入数字or字母(case

#!/bin/bash
read -p "请在此处输入:" keycase $key in
[0-9])
echo "你输入的是 数字"
;;
[a-z]|[A-Z])
echo "你输入的是 字母"
;;
*)
echo "输入有误"
bash $0
esac

2.分数等级分类

#!/bin/bash
#积分分类
read -p "请输入积分(0-100):" JF
if [ $JF -ge 90 ];thenecho '优'
elif [ $JF -lt 90 ];thenecho '差'
fi

3.测试机器是否在线(for、if

#!/bin/bash
for i in {1..254}
do
{
ping  -c2  -w2  192.168.91.$i &>/dev/null
if  [ $? -eq 0 ]
then
echo  host $i is online
echo "$i" >> host.txt
else
echo "host $i is offline"
fi
}&
done
wait

4.猜价格小游戏(while、if

#!/bin/bash
p=`echo $[RANDOM%1000+1]`
time=0while true
do
let time++
read -p "请输入您猜测的价格(1-1000):" h
if [ $h -eq $p ]
then
echo "恭喜您猜中了,您一共猜测了$time次"
exit
elif [ $h -gt $p ]
then
echo "您猜测的价格过高"
else
echo "您猜测的价格过低"
fi
done

5.检查文件是否存在且有执行权限(if

#!/bin/bash
#检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权
cd /roottest -f test.shif [ $? -eq 0 ];thentest -x test.shif [ $?-eq 0 ];thenecho "有test.sh文件且可执行"elseecho "有test.sh文件但不可执行"fielseecho "没有test.sh文件"
fi

6.赛跑选拔并分组(if

#!/bin/bash
#提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,
#大于10秒的都淘汰,如果输入其它字符则提示重新输入;
#进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
read -p "请输入您100米赛跑的秒数:" sec if [ $sec -gt 0 ] && [ $sec -le 10 ];thenread -p "请输入您的性别(男|女):" sex if [ $sex = "男" ] || [ $sex = "女" ];thenif [ $sex == "男" ];thenecho "恭喜进入选拔赛男生组"elif [ $sex == "女" ];thenecho "恭喜进入选拔赛女生组"fi  elseecho "输入错误,请重新输入"fi  
elseecho "很遗憾,您被淘汰了"
fi

7.解压压缩包(case

#!/bin/bash
#用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
read -p "请输入你要解压的文件:" file
case $file in
*.tar.bz2)
echo "正在解压bz2文件至opt目录中....."
tar -xvf $file -C /opt
;;*.tar.gz)
echo "正在解压gz文件至opt目录中....."
tar -xvf $file -C /opt
;;*)
echo "文件格式有误,请重新输入文件"
;;
esac

8.判断奇数偶数(if

方法一:
#!/bin/bash
read -p "请输入一个数字:" num
let i=$num+1
if [ $? -eq 0 ];thenecho "你输入的是整数"let rst=$num%2if [ $rst -eq 0 ];thenecho "你输入的是偶数"elseecho "你输入的是奇数"fi
elseecho "你输入的不是整数"
fi方法二:
#!/bin/bash
#判断输入的内容是奇数还是偶数
read -p "请输入一个数字:" num
let n=$num+1
if [ $? -eq 0 ];thenecho "你输入的是整数"if [ $[ $num % 2 ] -eq 0 ];thenecho "你输入的是偶数"elseecho "你输入的是奇数"fi
elseecho "你输入的不是整数"
fi

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

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

相关文章

代码随想录算法训练营第十三天|层序遍历10,226.翻转二叉树,101.对称二叉树

系列文章目录 代码随想录算法训练营第一天|数组理论基础,704. 二分查找,27. 移除元素 代码随想录算法训练营第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 代码随想录算法训练营第三天|链表理论基础&#xff…

项目成本估算基准的常见步骤

项目成本估算基准是指在项目启动阶段确定的用于衡量和控制项目成本的基准。 基准成本是项目成本估算的依据,也是后续成本控制和决策的依据。它为管理层提供项目预算投资方案等关键投资依据,决定资源的分配情况,有助于优化资源使用效率&#x…

【Linux】文件周边001之系统文件IO

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.C语言文件IO 1.1…

2024 V加爆好友的4个方法

2024加好友👉加爆V信的4个方法

SUSE Linux 15 SP5 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任,图解仅供参考,请悉知!本次安装图解是在一个全新的演示环境下进行的,演示环境中没有任何有价值的数据,但这并不代表摆在你面前的环境也是如此。生产环境…

如何自己制作一个属于自己的小程序?

在这个数字化时代,小程序已经成为了我们生活中不可或缺的一部分。它们方便快捷,无需下载安装,扫一扫就能使用。如果你想拥有一个属于自己的小程序,不论是为了个人兴趣,还是商业用途,都可以通过编程或者使用…

epoll_socket

背景 通常来说,实现处理tcp请求,为一个连接一个线程,在高并发的场景,这种多线程模型与Epoll相比就显得相形见绌了。epoll是linux2.6内核的一个新的系统调用,epoll在设计之初,就是为了替代select, poll线性复…

Vue3中的自定义Hooks

为什么要使用Hooks? 组件复用性更强:通过Hooks可以使得组件的一些逻辑可以更好地进行封装和复用 更好的逻辑分离。Hooks有助于组件内的业务逻辑更加清晰明了,从而减少代码耦合度。 更高的代码可读性。使用Hooks使得函数组件的可读性更高&am…

【论文阅读|2024 WACV 多目标跟踪Deep-EloU】

论文阅读|2024 WACV 多目标跟踪Deep-EloU 摘要1 引言(Introduction)2 相关工作(Related Work)2.1 基于卡尔曼滤波器的多目标跟踪算法(Multi-Object Tracking using Kalman Filter)2.2 基于定位的多目标跟踪…

vue2 KeepAlive实操

需求 列表->详情 —缓存列表详情->列表 — 恢复列表缓存其他->列表 —不缓存列表 1. 注册eventbus Vue.prototype.$eventBus new Vue();2. 视图文件 <keep-alive :include"cacheList"><router-view></router-view> </keep-alive&…

一篇博客读懂排序

目录 一、常见的排序 二、冒泡排序 2.1基本思想&#xff1a; 2.2代码&#xff1a; 三、插入排序 3.1基本思想&#xff1a; 3.2思路讲解&#xff1a; 3.3代码&#xff1a; 3.4时间复杂度&#xff1a; 四、希尔排序 4.1基本思路&#xff1a; 4.2思路讲解&#xff1a;…

android 防抖工具类,经纬度检查工具类

一&#xff1a;点击事件防抖工具类&#xff1a; public abstract class ThrottleClickListener implements View.OnClickListener {private long clickLastTimeKey 0;private final long thresholdMillis 500;//millisecondsOverridepublic void onClick(View v) {long curr…

微信小程序如何获取当前日期时间

Hello大家好&#xff01;我是咕噜铁蛋&#xff0c;获取当前日期时间是小程序中经常会用到的一个功能。因此&#xff0c;在本文中&#xff0c;我通过科技手段给大家收集整理了下&#xff0c;今天我将向大家介绍如何在微信小程序中获取当前日期时间的方法&#xff0c;并分享一些实…

nginx 实现动静分离

目录 nginx 实现动静分离 1.配置动静分离 nginx 实现动静分离 为了加快网站的解析速度&#xff0c;可以把动态页面和静态页面由不同的服务器来解析&#xff0c;加快解析速度。降低原来单个服务器的压力。 在动静分离的tomcat的时候比较明显&#xff0c;因为tomcat解析静态很慢…

Overleaf(LaTeX文档在线编写平台)使用学习记录

一、LaTeX简概[1] LaTeX&#xff0c;是一种基于TEX的排版系统&#xff0c;是一种可以处理排版和渲染的标记语言。由美国计算机科学家莱斯利兰伯特在20世纪80年代初期开发&#xff0c;利用这种格式系统的处理&#xff0c;即使用户没有排版和程序设计的知识也可以充分发挥由TEX所…

离零售业智能体时代的真正开启还有多远?

AIGC&#xff08;生成式人工智能&#xff09;当道的2023年&#xff0c;将LLM&#xff08;大语言模型&#xff09;的各类生成式能力发挥到淋漓尽致、精彩纷呈的程度。各行各业一边在观望大语言模型不断扩宽的商业运用可能&#xff0c;一边在继续探寻能够不断拓宽企业往纵深发展的…

Mybatis----缓存

MyBatis是一个流行的Java持久化框架&#xff0c;它提供了一个灵活的缓存机制来提高查询性能。 MyBatis的缓存机制主要分为一级缓存和二级缓存。 一级缓存是指在同一个SqlSession中&#xff0c;查询结果会被缓存起来&#xff0c;当再次执行同样的查询时&#xff0c;直接从缓存中…

基于SSM的企业文档管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是何时&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML 我欲乘风归去 又恐琼楼玉宇 高处不胜寒 -苏轼 一、项目简介 现代经济快节奏发展以及不断完善升级的信息化技术&…

latex图文混排示例

\parbox[t]{0.7\textwidth}{ 本题属于利用信号量实现前驱的经典问题&#xff0c;操作C必须在A和B完成后执行&#xff0c; 操作E必须在C和D完成后执行&#xff0c;其执行顺序如右图所示。 定义同步信号量A、B、C、D&#xff0c;一开始四个操作都未执行&#xff…

深度了解TCP/IP模型

网络通信是现代社会不可或缺的一部分&#xff0c;而TCP/IP模型作为网络通信的基石&#xff0c;扮演着至关重要的角色。本文将深入探讨TCP/IP模型的概念、结构及其在网络通信中的作用&#xff0c;为读者提供全面的了解。 一.TCP/IP模型简介 TCP/IP模型是一个网络通信协议体系&a…