今天继续给大家介绍Linux基本知识,本文主要内容是Linux shell脚本的分支。

一、shell分支——if语句形式

在shell脚本中,我们通常使用if语句,使得脚本根据某些条件而执行不同的命令,这可以极大程度上使得脚本的功能更加强大和灵活。
if语句就是shell脚本中实现分支的命令,if脚本有单分支、双分支和多分支三种形式,这三种形式格式如下:
if单分支:

if 表达式; then执行语句
fi

if双分支:

if 表达式; then执行语句
else 执行语句
fi

if多分支:

if 表达式; then执行语句
elif 表达式;then 执行语句
elif 表达式;then 执行语句
…………
else 执行语句
fi

二、shell分支——if表达式

在if脚本中,我们需要写if表达式来表明if脚本的条件,if表达式常常使用中括号,表达式可以包含的内容包括逻辑表达式、特殊的运算比较符(不是+、-、*……)即特殊的判断参数等。
if表达式中常见的判断运算符如下:

-f    判断文件是否存在
-d    判断目录是否存在
-z    判断是否是空字符串

if表达式中常见的逻辑运算符如下:

-eq   比较两边是否相等
-ne   比较两边是否不相等
-lt   比较左边是否小于右边
-gt   比较左边是否大于右边
-le   比较左边是否小于等于右边
-ge   比较左边是否大于等于右边
-a 或 &&  左右两边连接两个逻辑表达式,该符号表示逻辑与
-o 或 ||  左右两边连接两个逻辑表达式,该符号表示逻辑或

需要特别注意的是,上述符号都应用于if表达式是一个中括号“[]”的情景,如果if表达式使用的是小括号,则括号内使用的是算术运算符,如+、-、*等等。下面会对shell脚本中的括号进行详解。

三、shell分支——if括号

在shell脚本中,弄明白括号的问题可以帮助我们看懂别人写的脚本,至于当自己写脚本的时候,完全可以挑选自己喜欢的格式。shell中有五种类型的括号,它们分别是大括号、双中括号、中括号、双小括号、小括号
1、大括号
大括号一般用于命令的拓展,比如touch命令可以借助大括号一次性创建多个文件,命令是:

touch file{1..10..2}

在shell脚本中,如果定义有函数,则函数的执行语句也需要用大括号包括起来。
2、中括号
中括号的使用就如同本文第二章介绍的用法,为if语句条件表达式所用
3、双中括号
双中括号支持中括号的在本文第二节的用法,同时也支持==、>、<等的数学逻辑运算符,即双中括号有更高的容错性,格式上更加灵活。
4、双小括号
双小括号也可以用于if表达式,且支持==、>、>=、&&等符号,比较符合C语言编程习惯。
5、小括号
小括号常用于for循环,指定循环条件,也常备用于指定数组,另外,小括号以内还可以放命令, 命令之间需要用分号隔开。

四、shell分支——脚本示例

最后,写几个简单的shell脚本示例,提供给初学者学习。

(一)判断指定目录是否存在

#!/bin/bash
# 2021-10-13
# Author:Pzz
# Used to practice shell script
# This script is used to find whether the dir is existed
if [ -d /var/www/html ];thenecho "The web dir is existed"
fi
if [ ! -d /var/www/hdjksjk ];thenecho "The other dir is not existed"
fi

(二)比较两个数大小

#!/bin/bash
# 2021-10-13
# Authored bu Pzz
# This script is uesed to find the bigger numa
read -p "Please input the first number:" NUM1
read -p "Please input the second number:" NUM2
if [ $NUM1 -gt $NUM2 ];thenecho "The $NUM1 is larger"
elseecho "The $NUM2 is larger"
fi
~

(三)测试成绩定级

#/bin/bash
# 2021-10-13
# Authored by Pzz
# This script is used to get the grade
# This script din't test the user's input
SCORE=$1
if [ $SCORE -gt 90 ];thenecho "A"
elif [ $SCORE -gt 75 ];thenecho "B"
elif [ $SCORE -gt 60 ];thenecho "C"
elseecho "D"
fi

欢迎持续关注我的博客,将会持续更新更加复杂有用的shell脚本!!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

Linux shell脚本详解及实战(二)——shell脚本之分支相关推荐

  1. shell脚本详解(十二)——Here Document免交互及Expect自动化交互

    shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...

  2. shell脚本详解(一)——Shell编程规范与变量

    详解Shell编程规范与变量 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官" 二.用户的登录shell ...

  3. Linux DNS服务详解——DNS实战配置

    今天继续给大家介绍Linux基础知识,本文主要内容是DNS的实战配置. 一.DNS安装与配置文件 如果采用YUM的安装方式,DNS设计到三个包,相关命令如下: yum install -y bind ...

  4. python跳一跳脚本详解_跳一跳 python脚本 改进版

    原版本github地址:https://github.com/wangshub/wechat_jump_game 当时版本我用时感觉性能不佳,为能霸榜装逼,针对自己的手机进行了改进. 主要是对检测棋子 ...

  5. Linux DNS服务详解——DNS服务搭建细节

    前几天,我陆续给大家介绍了DNS服务的相关内容,今天,我给大家补充介绍一下DNS服务中一些小问题. 前文链接: Linux DNS服务详解--DNS基础知识 Linux DNS服务详解--DNS实战配 ...

  6. shell脚本详解(二)——条件测试、if语句和case分支语句

    shell脚本详解(二)--条件测试.if语句和case分支语句 一.条件测试 1.test命令 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二.if条件语句 1.单分支 2.双分支 ...

  7. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战

    Linux iptables防火墙详解 + 配置抗DDOS***策略实战 Linux 内核中很早就实现了网络防火墙功能,在不同的Linux内核版本中,使用了不同的软件实现防火墙功能. 在2.0内核中, ...

  8. shell脚本详解(一)——初学shell脚本必看哦

    shell脚本详解 一.Shell脚本概述 1.1.shell脚本的概念 1.2.shell脚本应用场景 1.3.shell脚本能干什么 1.4. shell的作用--命令翻译器,"翻译官& ...

  9. shell脚本详解(十一)——awk文本和数据处理编程语言

    shell脚本详解(十一)--awk文本和数据处理编程语言 一.awk命令 – 文本和数据进行处理的编程语言 1.工作原理 2.命令格式 3.awk常见的内建变量(可直接使用) 4.按行输出文本 5. ...

  10. java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例

    java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...

最新文章

  1. Objective-C中的Category
  2. springboot(2.2.4)的默认日志框架logback换成log4j2
  3. 微软OTech第二次会议(广州站)
  4. 使用maven导入任意jar包
  5. Redis系列-主从复制配置
  6. 四川大学计算机软件技术基础,四川大学《计算机软件技术基础》复习题2及答案#.doc...
  7. 与计算化学相关的计算机程序,计算机引发化学工程革命
  8. AndroidStudio_android开发在线文档_在线API_蓝牙开发在线文档---Android原生开发工作笔记243
  9. 【方案分享】2020娜扎X薇娅SKG娜小古直播方案.pdf(附下载链接)
  10. 谷歌大脑发布神经架构搜索新方法:提速1000倍
  11. android 增删改查错误,安卓中使用HttpURLConnection进行增删改查操作(包括后端讲解)(一)...
  12. SpringMVC注解@RequestParam解析
  13. Debugview调试视图
  14. Qt--自定义Delegate
  15. 3500份课程课后习题答案与大家分享~~
  16. 墨卡托投影参数设置_横轴墨卡托投影坐标设置与导入导出CAD文件讲解
  17. 永磁同步电机MTPA最大转矩电流比控制仿真(公式法)
  18. JavaScript 页面刷新方法
  19. 自由落体matlab代码,matlab仿真自由落体..doc
  20. php5.4.45连接mssql2000,用php在linux下连接mssql2000(转)

热门文章

  1. 网卡驱动程序问题---电脑自己没操作,突然连不上网
  2. pytorch--- .zero_grad()
  3. 《Effective Python 2nd》——类与接口
  4. C语言基础:用快速排序实现输出最大数
  5. 【机器学习】xgboost以及lightgbm资料汇总
  6. 火狐浏览器驱动_火狐浏览器开始支持比WebGL更简单的绘图API WebGPU
  7. Ubuntu18.04开机卡在“starting Gnome Display Manager”的解决方法
  8. Vue router路由懒加载
  9. jquery详细基础教程
  10. 7-1 特殊a串数列求和 (20 分)