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

今天继续给大家介绍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 ];then
        echo "The web dir is existed"
fi
if [ ! -d /var/www/hdjksjk ];then
        echo "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 ];then
    echo "The $NUM1 is larger"
else
    echo "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 ];then
  echo "A"
elif [ $SCORE -gt 75 ];then
  echo "B"
elif [ $SCORE -gt 60 ];then
  echo "C"
else
  echo "D"
fi

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

你可能感兴趣的:(Linux,linux,shell,脚本,bash,if分支)