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 "请在此处输入:" key
 
case $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 ];then
  echo '优'
elif [ $JF -lt 90 ];then
 echo '差'
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=0
 
while 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 /root
 
test -f test.sh
 
if [ $? -eq 0 ];then
 
  test -x test.sh
  if [ $?-eq 0 ];then
    echo "有test.sh文件且可执行"
  else
    echo "有test.sh文件但不可执行"
  fi
 
else
  echo "没有test.sh文件"
fi

6.赛跑选拔并分组(if

#!/bin/bash
#提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,
#大于10秒的都淘汰,如果输入其它字符则提示重新输入;
#进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
read -p "请输入您100米赛跑的秒数:" sec 
 
if [ $sec -gt 0 ] && [ $sec -le 10 ];then
     read -p "请输入您的性别(男|女):" sex 
  if [ $sex = "男" ] || [ $sex = "女" ];then
    if [ $sex == "男" ];then
       echo "恭喜进入选拔赛男生组"
    elif [ $sex == "女" ];then
       echo "恭喜进入选拔赛女生组"
    fi  
  else
    echo "输入错误,请重新输入"
  fi  
else
    echo "很遗憾,您被淘汰了"
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 ];then
  echo "你输入的是整数"
    let rst=$num%2
    if [ $rst -eq 0 ];then
      echo "你输入的是偶数"
    else
      echo "你输入的是奇数"
    fi
else
  echo "你输入的不是整数"
fi
 
方法二:
#!/bin/bash
#判断输入的内容是奇数还是偶数
read -p "请输入一个数字:" num
let n=$num+1
if [ $? -eq 0 ];then
  echo "你输入的是整数"
    if [ $[ $num % 2 ] -eq 0 ];then
      echo "你输入的是偶数"
    else
      echo "你输入的是奇数"
    fi
else
  echo "你输入的不是整数"
fi

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

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

相关文章

cmd_to_robot 讨论及 G29 控制优化

cmd_to_robot 讨论及 G29 控制优化 cmd_to_robot 讨论 转向电机控制代码中,补偿信息在循环中发布,转向完成信息在回调函数中发布 转动电机控制代码中,对转动电机的控制在转向完成的回调函数中实现 这就意味着如果一直没有 /cmd_vel 消息发…

基于springboot+vue的学科竞赛管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

零日漏洞:威胁与应对

一、引言 随着信息技术的迅猛发展,网络安全问题日益凸显。其中,零日漏洞已成为当今网络安全领域最受关注的问题之一。本文将深入探讨零日漏洞的威胁、产生原因以及应对策略,以期提高人们对这一问题的认识和防范意识。 二、零日漏洞的威胁 …

Java - 数字签名与数字证书

文章目录 概述对称加密非对称加密数字签名数字证书根证书申请ca证书 完整流程小结 概述 SSL是一种安全协议,用于在网络传输中提供数据加密、身份验证和完整性保护。它基于传输层协议(如TCP),并为其提供加密和安全功能。 对称加密…

LLM之RAG理论(七)| 高提升RAG检索的四种方法

​ RAG两大核心组件:检索和生成。本文将总结四种提高RAG系统检索质量的技术:1)子问题查询引擎(来自LlamaIndex),2)RAG-Fusion、3)RAG-end2end和4)LoRA微调。 一、L…

如何用GPT绘图?

详情点击练级:如何用GPT绘图? 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2 二定制自己的GPTs…

多线程select并发

多线程select并发 只需要在上面代码的基础上对服务器端做些更改, 主要逻辑如下: 主线程在检测到有新的客户端连接之后, 创建一个子线程完成accept操作, 具体如下: if(FD_ISSET(lfd, &rdtemp)){auto* info new fdInfo;info->fd lfd;info->maxfd &maxfd;info…

grid布局,flex布局实现类似响应式布局的效果

一. grid布局 实现代码 <!DOCTYPE html> <html lang"en"><head><style>.box {display: grid;grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /*自动填充&#xff0c;最小宽度300px*/justify-content: space-between;gap:…

go语言(十六)----tag

package mainimport ("fmt""reflect" )type resume struct {Name string info:"name" doc:"我的名字"Sex string info:"sex" }func findTag(str interface{}) {t : reflect.TypeOf(str).Elem()for i : 0;i < t.NumField…

redis高可用之Sentinel模式

文章目录 前言1. 创建联想主服务器的网络连接2. 创建连向其他Sentinel的命令连接 &#xff08;也就是调度中心的高可用&#xff09;3.选举领头Sentinel 调度中心高可用4.故障转移 选出新的主服务器 redis服务器高可用如何挑选新的主服务器&#xff1f; 总结 前言 Sentinel(哨岗…

【Keil5】keil5修改主题背景颜色--仿VS Code 主题

keil单调的白底主题难免会让人产生视觉疲劳&#xff0c;该工具里有仿VS的黑色主题.当然&#xff0c;如果你觉得这些都不合你心意也可自己制作配色方案。 1、备份 C:\Keil_v5\UV4下的 global.prop文件。 2、下或者复制 我配置的global.prop文件到你的Keil安装路径&#xff0c;比…

什么是护网行动?

护网&#xff0c;也称“网络保护”&#xff0c;是指网络安全人员对企业或组织的网络进行检查、维护和保护&#xff0c;以防止网络受到黑客攻击、病毒、木马或其它恶意程序的侵入和损害。护网工作包括&#xff1a;网络安全规划、网络配置和控制、漏洞发现和修复、入侵检测和防范…

jenkins 使用webhooks 触发构建任务gitea为例 gitlab类似

jenkins 使用webhooks 触发构建任务gitea为例 多次尝试以及网上的各种资料查阅成功了下 其他人给的答案他们有他们的道理&#xff0c;至少我没有实验成功。我这里就记录下 添加API token 将生成的token 复制保存 第4步骤的时候要用 配置构建方式 填写身份验证令牌 安全配…

Spring复习-问题回答

1.什么是 spring&#xff0c;你对 spring 的理解? Spring是一个轻量级&#xff0c;非侵入式的&#xff08;不使用框架特定的类&#xff0c;感受不到框架&#xff09;IOC和AOP一站式的java后端开发框架&#xff0c;简化企业开发。 2.spring 的优缺点 优点&#xff1a; Spr…

HTML标签(二)

目录 表格标签 表格的主要作用 表格的具体用法 表头单元格标签 表格属性 表格结构标签 合并单元格 合并单元格的方式&#xff1a; 跨行合并&#xff1a; 跨列合并&#xff1a; 列表标签 无序列表 有序列表 自定义列表 表单标签 表单域 表单域的常用属性 表单元素…

阿里云幻兽帕鲁服务器租用价格表,免费?

幻兽帕鲁异常火爆自建幻兽帕鲁服务器不卡又稳定&#xff0c;继腾讯云推出幻兽帕鲁自建服务器教程和4核16G幻兽帕鲁专用特价游戏服务器后&#xff0c;阿里云坐不住了&#xff0c;直接推出特价4核32G和4核16G的palworld专属游戏机&#xff0c;另外还可以申请免费3个月的4核8G无影…

系统移植,GNU命令,Uboot移植

一.GNU命令 1、addr2line 把程序地址转换为文件名和行号 做调试 2、ar 建立&#xff0c;修改&#xff0c;提取归档文件 3、Id:GNU arm-none-linux-gnueabi-ld start.o main.o -Tmap.lds -o uart.elf 链接器 4、as 主要用来编译GNU编译器gcc输出的汇编文件&a…

git本地分支的合并/切换分支时遇到的问题

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a; 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit提交修改2.2&#xff09;方式2&#…

电脑文件mfc140.dll丢失的解决方法指导,怎么快速修复mfc140.dll

mfc140.dll 文件的缺失是个普遍的问题&#xff0c;在日常使用中可能会时不时遇到。本文主要目的是详细介绍一旦遇到 mfc140.dll 文件缺失&#xff0c;应该如何进行下载和安装的步骤。不再赘言&#xff0c;下面就一起深入了解mfc140.dll丢失的解决方法指导。 一. mfc140.dll的作…

VBA即用型代码手册之改变主窗口标题栏名称及隐藏工作表

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…