Linux shell编程 条件语句if case

条件测试

test命令

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

格式1: test   条件表达式
格式2: [ 条件表达式 ]

 文件测试

[ 操作符 文件或者目录 ]

[ -e 1.txt ]#查看1.txt是否存在,存在返回0
echo $?  #查看是上一步命令执行结果 0成功 非0失败

-d	测试是否为目录(Directory)
-e	测试目录或文件是否存在(Exist)
-f	测试是否为文件(File)
-r	测试当前用户是否有权限读取 (Read)
-w	测试当前用户是否有权限写入 (Write)
-x	测试当前用户是否有权限执行 (eXcute)

整数值比较

[ 整数1  操作符 整数2 ]
常用的测试操作符(重点)


英文命令(只能操作整数)                  操作符(可以比较英文命令不能比较的整数)
-eq	    等于(Equal)	                    ==
-ne	    不等于(Not Equal)	            !=
-gt	    大于(Greater Than)	            >
-lt	    小于 (Lesser Than)           	<
-le	    小于或等于(Lesser or Equal)	    <=
-ge	    大于或等于(Greater or Equal)    	>=

逻辑符号

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

-a或&&:逻辑与,”而且“的意思
-o或||:逻辑或,”或者“的意思
!:逻辑否


if语句

单分支

if 条件测试操作         if  已用空间>80%
  then  命令序列    >    then 报警
fi                     fi  

双分支

if 条件测试操作          if 80端口是否在监听
   then 命令序列1           then 网站服务已在运行
                    >
                          else  启动httpd服务
   else 命令序列2        fi
fi

多分支

if 条件测试操作1
    then 命令序列1
elif 条件测试操作1
    then 命令序列1
else
    命令序列1
fi

case语句

case 分数 in
85~100)
    优秀
    ;;

70~84)
    合格
    ;;

*)
    不合格
esac

实例

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

if [ -e ~/test.sh ]
then
        echo "存在test.sh"
        if [ -x ~/test.sh ]
                then echo "test.sh可执行"
        else echo "test.sh无执行权限"
        fi
else echo "不存在test.sh"
fi

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

read -p 'input second' second
if [ $second -eq $second ] &>/dev/null
 #用-eq排除非数字,由于输入非数字会输出错误报告,重定向到null设备
then
        if [ $second -gt 0 ] && [ $second -le 10 ] #大于0s小于等于10s
        then read -p 'input sexual(男女)' sexual
        if [ $sexual == "男" ]
                then echo "$second 晋级男组"
        elif [ $sexual == "女" ]
                then echo "$second 晋级女组"
        else echo "性别错误"
        fi
     else echo "出局 $second"
     fi
else echo "输入数字!"
fi


 

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

for name in *.tar.*
do
[[ $name == *.tar.gz ]] && a='gz'
[[ $name == *.tar.bz2 ]] && a='bz2'
case $a in
gz)
tar -xzvf $name -C /opt
;;
bz2)
tar -xjvf $name -C /opt
;;
*)
        echo "bad"
esac
done
        echo "complete"
read -p "请输入你要解压的文件:" file 
case $file in ky28.tar.gz
*.tar.bz2)
echo "正在解压bz2文件至opt目录中....."
tar -jxvf $file -C /opt
;;
 
*.tar.gz)
echo "正在解压gz文件至opt目录中....."
tar -zxvf $file -C /opt
;;
 
*)
echo "文件格式有误,请重新输入文件"

esac

 

4.提示用户输入内容,使用if 语句判断输入的内容是否为整数。

read -p "input number" num
if [ $num -eq $num ] &>/dev/null
then
        echo "整数"
else
        echo "不是整数"
fi


5.根据上一题再判断输入的内容是奇数还是偶数。

read -p "input number" num
if [ $num -eq $num ] &>/dev/null
then
        echo '整数'
        if [ $(($num%2)) == 0 ]
        then echo "偶数"
        else echo "奇数"
        fi
else
        echo "不是整数"
fi


6.用if 语句判断主机是否存活
ping -c 5

[root@xue xue]# cat ping.sh
ping -c 5 192.168.80.101
if [ $? == 0 ]
then echo '存活'
else echo '不存活'
fi
ping -c 5 192.168.80.250
if [ $? == 0 ]
then echo '存活'
else echo '不存活'
fi


7.用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中
使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,
要求如果命令选项不对,则提示 “用法: $0 {start|stop|status|restart}”。

read -p "输入start stop status restart以操作防火墙" choose
case $choose in
start)
    service firewalld start
;;
stop)
    service firewalld stop
;;
status)
    service firewalld status
;;
restart)
    service firewalld restart
;;
*)
    echo "用法: $0 {start|stop|status|restart}"
esac

 

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

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

相关文章

mysql语句高级用法使用记录和sql_mode=only_full_group_by错误解决

最近工作时用到的几种用法记录一下 sql_modeonly_full_group_by 报错 sql出错示例如下 column ‘qnaq.ta.issue_org_code’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 原因分析&#xff1a;…

【Java笔试强训 15】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;查找输入…

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

目录 一、商品列表 本关任务 具体要求 结果输出 实现代码 二、商品详情 本关任务 JDBC查询方法封装 商品相关信息介绍 具体要求 结果输出 实现代码 三、商品搜索 编程要求 测试说明 实现代码 四、购物车列表 本关任务 JDBC查询方法封装 购物车相关信息介绍…

WizardKM:Empowering Large Language Models to Follow Complex Instructions

WizardKM:Empowering Large Language Models to Follow Complex Instructions Introduction参考 Introduction 作者表明当前nlp社区的指令数据比较单一&#xff0c;大部分都是总结、翻译的任务&#xff0c;但是在真实场景中&#xff0c;人们有各式各样的需求&#xff0c;这限制…

程序员阿里三面无理由挂了,被HR一句话噎死,网友:这可是阿里啊

进入互联网大厂一般都是“过五关斩六将”&#xff0c;难度堪比西天取经&#xff0c;但当你真正面对这些大厂的面试时&#xff0c;有时候又会被其中的神操作弄的很是蒙圈。 近日&#xff0c;某位程序员发帖称&#xff0c;自己去阿里面试&#xff0c;三面都过了&#xff0c;却被…

CH32F203RCT6 pin2pin兼容STM32F103RCT6

32位大容量通用型Cortex-M3单片机 CH32F203是基于Cortex-M3内核设计的工业级大容量通用微控制器&#xff0c;此系列主频高达144MHz&#xff0c;独立了GPIO电压&#xff08;与系统供电分离&#xff09;。资源同比增加了随机数单元&#xff0c;4组运放比较器&#xff1b;提高串口…

Python进阶项目--只因博客(bootstrap+flask+mysql)

前言 1.全民制作人们大家好&#xff0c;我是练习时长两年半的个人练习生只因坤坤&#xff0c; 喜欢唱&#xff0c;跳&#xff0c;rap&#xff0c;篮球&#xff0c;music...... 在今后的节目中&#xff0c;我还准备了很多我自己作词、作曲、编舞的原创作品&#xff0c; 期待的话…

Docker compose 制作 LNMP 镜像

目录 第一章.Nginx镜像 1.1安装环境部署 1.2.nginx镜像容器的配置 第二章.php镜像的安装部署 2.1.文件配置 第三章.mysql镜像的安装部署 3.1.文件配置 第四章.配置网页 4.1.进入容器mysql 4.2.浏览器访问&#xff1a; 第一章.Nginx镜像 1.1安装环境部署 systemctl s…

亚科转债,鹿山转债上市价格预测

亚科转债 基本信息 转债名称&#xff1a;亚科转债&#xff0c;评级&#xff1a;AA&#xff0c;发行规模&#xff1a;11.59亿元。 正股名称&#xff1a;亚太科技&#xff0c;今日收盘价&#xff1a;5.58元&#xff0c;转股价格&#xff1a;6.46元。 当前转股价值 转债面值 / 转…

新来一00后,给我卷崩溃了..

2022年已经结束结束了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备今年的金三银四的面试计划。 在此展示一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的…

记录一次在x86 软件中使用dpdk 的历程(Makefile gcc改成g++)

我们一台服务器上原本是用grub下预留内存的方式, 然后把物理地址在板卡上的配置文件中传给L1. 但是在客户的环境上服务器windriver上不是能预留内存的. 所以服务器上需要在testMxx程序中用dpdk的方式分配出内存, 然后, 把物理地址通过sdp虚拟的网口&#xff0c; 用socket 传…

日撸 Java 三百行day38

文章目录 说明day381.Dijkstra 算法思路分析2.Prim 算法思路分析3.对比4.代码 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;https://github.com/fulisha-ok/…

接口测试入门必会知识总结(学习笔记)

目录 什么是接口&#xff1f; 内部接口 外部接口 接口的本质 什么是接口测试&#xff1f; 反向测试 为什么说接口测试如此重要&#xff1f; 越接近底层的 Bug&#xff0c;影响用户范围越广 目前流行的测试模型 接口测试的优越性 不同协议形式的测试 接口测试工作场景…

HTB靶机03-Shocker-WP

Shocker scan 2023-03-30 23:22 ┌──(xavier㉿xavier)-[~/Desktop/Inbox] └─$ sudo nmap -sSV -T4 -F 10.10.10.56 Starting Nmap 7.91 ( https://nmap.org ) at 2023-03-30 23:22 HKT Nmap scan report for 10.10.10.56 Host is up (0.40s latency). Not shown: 99 clos…

WindowsGUI自动化测试项目实战+辛酸过程+经验分享

WindowsGUI自动化测试项目实战辛酸过程经验分享 一、前言⚜ 起因⚜ 项目要求⚜ 预研过程⚜⚜ 框架选型⚜⚜ 关于UIaotumation框架 ⚜ 预研成果 二、项目介绍&#x1f493; 测试对象&#x1f493; 技术栈&#x1f493; 项目框架说明 三、项目展示&#x1f923; 界面实现效果&…

Nuxt3 布局layouts和NuxtLayout的使用

Nuxt3是基于Vue3的一个开发框架&#xff0c;基于服务器端渲染SSR&#xff0c;可以更加方便的用于Vue的SEO优化。 用Nuxt3 SSR模式开发出来的网站&#xff0c;渲染和运行速度非常快&#xff0c;性能也非常高&#xff0c;而且可SEO。 接下来我主要给大家讲解下Nuxt3的layouts布…

半监督目标检测

有监督目标检测&#xff1a; 拥有大规模带标签的数据&#xff0c;包括完整的实例级别的标注&#xff0c;即包含坐标和类别信息&#xff1b;弱监督目标检测&#xff1a; 数据集中的标注仅包含类别信息&#xff0c;不包含坐标信息&#xff0c;如图一 b 所示&#xff1b;弱半监督目…

漫谈大数据 - 数据湖认知篇

导语&#xff1a;数据湖是目前比较热的一个概念&#xff0c;许多企业都在构建或者准备构建自己的数据湖。但是在计划构建数据湖之前&#xff0c;搞清楚什么是数据湖&#xff0c;明确一个数据湖项目的基本组成&#xff0c;进而设计数据湖的基本架构&#xff0c;对于数据湖的构建…

Figma导出源文件的方法,用这个方法快速转换其它格式

市场上设计工具层出不穷&#xff0c;Sketch、AdobeXD、Axure、InVision、Figma、Pixso等都是优秀的设计工具&#xff0c;设计师经常面临如何从设计工具中导出文件的问题。 Figma软件的导出功能非常强大&#xff0c;因为轻量化体验受到很多设计师的喜爱。如何保存导出Figma源文…

【c语言】enum枚举类型的定义格式 | 基本用法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…