Linux shell编程 条件语句

news2024/12/26 13:29:30

条件测试

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"

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

 

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

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

相关文章

DJ4-3 连续分配存储管理方式

目录 4.3.1 单一连续分配 4.3.2 固定分区分配 1. 分区说明表 2. 内存分配过程 4.3.3 动态分区分配 一、分区分配中数据结构 二、分区分配算法 三、分区分配操作 4.3.4 可重定位分区分配 1. 紧凑 2. 动态重定位 3. 动态重定位分区分配算法 连续分配是指为用户程…

【数据结构】堆(一)

&#x1f61b;作者&#xff1a;日出等日落 &#x1f4d8; 专栏&#xff1a;数据结构 如果我每天都找出所犯错误和坏习惯&#xff0c;那么我身上最糟糕的缺点就会慢慢减少。这种自省后的睡眠将是多么惬意啊。 目录 &#x1f384;堆的概念及结构&#xff1a; &#x1f384;堆的实…

万丈高楼平地起 AI帮你做自己

AI的自我介绍 AI是人工智能&#xff08;Artificial Intelligence&#xff09;的英文缩写&#xff0c;是一种通过计算机技术模拟和延伸人类智能的技术和应用。AI可以被看作是一种智能化的计算机程序或系统&#xff0c;它能够自动地执行一些需要人类智能才能完成的任务&#xf…

JavaEE初阶学习:初识网络

1.网络发展史 1.独立模式 独立模式:计算机之间相互独立&#xff1b; 2.网络互连 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#xff0c;即以多个计算机协同工作来完成业务&#xff0c;就有了网络互连。 网络互连&#xff1a;将多…

除了Figma,再给你介绍10款好用的协同设计软件

组织结构越来越复杂&#xff0c;团队中的每个人都有独特的技能、经验和专业知识。我们怎样才能让团队更好地合作&#xff1f;在这种情况下&#xff0c;协同设计应运而生。 UI的未来是协同设计&#xff01;如果你想把握未来的设计趋势&#xff0c;不妨从使用高效的协同设计软件…

Docker的安装以及本地部署ILLA Builder

1.安装Docker&#xff0c;当前版本V4.18.0 。Docker引擎启动运行之后&#xff0c;效果如下图&#xff08;喜欢暗黑主题&#xff09; Docker启动可能出错&#xff0c;“Docker Desktop requires a newer WSL kernel version.” 如下图所示 解决方法&#xff0c;比较简单&#xf…

测试用例的基本要素和设计方法

作者&#xff1a;爱塔居 专栏&#xff1a;软件测试 作者简介&#xff1a;大三学生&#xff0c;希望同大家一起进步&#xff01; 文章简介&#xff1a;介绍写测试案例的功能需求测试和非功能需求测试和具体方法&#xff1a;判定表、正交表、等价类、边界值等 文章目录 目录 文章…

if条件语句

if条件语句 条件测试 test 测试表达式是否成立&#xff0c;若成立返回0&#xff0c;否则返回其他数值 格式1 &#xff1a;test 条件表达式&#xff1b;格式2 &#xff1a;[ 条件表达式 ] echo $?参数作用-d测试是否为目录 (Directory)-e测试目录或文件是否存在(Exist)-f测…

好物周刊#1:提示工程师养成指南

文章目录 &#x1f388; 项目ddruntiny-vuenetease-recent-profile &#x1f4bb; 软件BobScreenToGifSnipaste &#x1f578;️ 网站BrowserFramedocsmallDimmy.club &#x1f50c; 插件AdGuard[Global Speed: 视频速度控制](https://microsoftedge.microsoft.com/addons/deta…

强化学习-Double DQN、竞争网络结构和Rainbow(第4章)

来源书籍&#xff1a; TENSORFLOW REINFORCEMENT LEARNING QUICK START GUIDE 《TensorFlow强化学习快速入门指南-使用Python动手搭建自学习的智能体》 著者&#xff1a;[美]考希克巴拉克里希南&#xff08;Kaushik Balakrishnan&#xff09; 译者&#xff1a;赵卫东 出版…

【每日一题】leetcode21 - - 合并两个有序链表

文章目录 1.题目描述2.解题思路方法1&#xff1a;方法2&#xff1a; 1.题目描述 题目链接&#xff1a;力扣21&#xff0c;合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 2.解题思路 方法1&#xff1a;…

牛客网Verilog刷题——VL38

牛客网Verilog刷题——VL38 题目答案 题目 设计一个自动贩售机&#xff0c;输入货币有三种&#xff0c;为0.5/1/2元&#xff0c;饮料价格是1.5元&#xff0c;要求进行找零&#xff0c;找零只会支付0.5元。需要注意的是&#xff0c;投入的货币会自动经过边沿检测并输出一个在时钟…

【采坑专栏】【错误记录】起系统

doc说明 一级标题分大的&#xff0c;二级标题尽量加&#xff0c;三级标题是具体问题 语法 我的老毛病-易错的 多驱 复制粘贴导致前后一样 管脚约束还是直接选吧 多驱动 Vivado WARNING&#xff1a;Multi-driven net Q with xth driver pin 警告的原因和消除方法 出现这…

注意力机制:基于Yolov8的Triplet注意力模块,即插即用,效果优于cbam、se,涨点明显

论文&#xff1a;https://arxiv.org/pdf/2010.03045.pdf 本文提出了可以有效解决跨维度交互的triplet attention。相较于以往的注意力方法&#xff0c;主要有两个优点&#xff1a; 1.可以忽略的计算开销 2.强调了多维交互而不降低维度的重要性&#xff0c;因此消除了通道和权…

STM32F4_SRAM中调试代码

目录 1. 在RAM中调试代码 2. STM32的三种存储方式 3. STM32的启动方式 4. 实验过程 通过上一节的学习&#xff0c;我们已经了解了SRAM静态存储器&#xff1b; 1. 在RAM中调试代码 一般情况下&#xff0c;我们在MDK中编写工程应用后&#xff0c;调试时都是把程序下载到芯片…

Android类似微信聊天页面教程(Kotlin)四——数据本地化

前提条件 安装并配置好Android Studio Android Studio Electric Eel | 2022.1.1 Patch 2 Build #AI-221.6008.13.2211.9619390, built on February 17, 2023 Runtime version: 11.0.150-b2043.56-9505619 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11 …

Flink从入门到精通之-07处理函数

Flink从入门到精通之-07处理函数 之前所介绍的流处理 API&#xff0c;无论是基本的转换、聚合&#xff0c;还是更为复杂的窗口操作&#xff0c;其实都是基于 DataStream 进行转换的&#xff1b;所以可以统称为 DataStream API&#xff0c;这也是 Flink 编程的核心。而我们知道…

同样是测试,你年薪50W,我年薪10W,我哭了...

软件测试可以拿到年薪50万&#xff1f; 开什么玩笑&#xff1f; 我才月薪15K。 小伙伴看到标题是不是一开始的反应是这样的&#xff1f;是的话举一个小爪爪吧&#xff01; 那软件测试到底能不能拿到年薪50万呢&#xff1f; 没有吃过猪肉还没见过猪跑吗&#xff0c;你自己没…

【云原生-深入理解Kubernetes-1】容器的本质是进程

文章目录 &#x1f479; 关于作者一、为什么会出现容器&#xff1f;二、容器是什么&#xff1f;三、容器“边界”的实现手段3.1、进程如何运行的&#xff1f;3.2、Namespace 与 Docker 边界容器的本质是一个进程这是怎么做到的呢&#xff1f; 总结✊ 最后参考 &#x1f479; 关…

践行公益担当|人情如故,爱心依旧

爱心助学 情暖童心 随着改革开放&#xff0c;少数民族地区发生了翻天覆地的变化&#xff0c;城乡经济持续发展&#xff0c;人民生活水平日益提高。但对于很多居住在偏远山区的民族自然村&#xff0c;由于山区的地形限制&#xff0c;自然生存环境恶劣&#xff0c;交通及文化、教…