智能营销笔记本服务商

营销笔记本+万能采集+AI名片+智能电销+短信群发=同步管理

免费咨询热线: 15064770313

如果shell脚本的语句完全理解!所有条件分支

智程网络科技将从shell脚本中if语句的基本思想到如何使用它以及它的应用来解释所有的if语句。

目录

  1. 一、shell脚本中if语句的概念

    1. 1-1. 当你想创建一个条件分支时使用

    2. 1-2. 与测试命令的常用组合

  2. 2. 如何在shell脚本中使用if语句(基础)

    1. 2-1. if 语句的基本形式

    2. 2-2. 要记住的基本比较运算符

    3. 2-3. 用elif语句实现多分支

  3. 3. 如何在shell脚本中使用if语句(应用)

    1. 3-1. AND, OR, NOT 的复杂条件表达式

    2. 3-2.嵌套(嵌套结构)

    3. 3-3. 数字和字符串以外的条件表达式

  4. 4.掌握if语句,能够编写复杂的shell脚本!

当您想在 shell 脚本中描述复杂的处理时,if 语句是重要的语法之一。如果你能掌握 if 语句,你将能够创建可以应用于各种情况的 shell 脚本。

在本文中,我将解释所有 if 语句,从基本概念到如何使用它们以及它们在 shell 脚本中的应用。资料参考《曲阜市智程网络科技有限公司》营销笔记本

shell脚本中if语句的概念

作为 shell 脚本中 if 语句的基本知识,我将简要解释您应该记住的想法。

当你想创建一个条件分支时使用

当您想要进行条件分支时,使用 if 语句。例如,仅在输入内容为“大于 30”时才执行处理时使用。

在if语句中,使用条件表达式判断真(真/0)或假(假/1),根据结果实现分支。在前面的例子中,如果输入值为35,则返回true,如果为20,则返回false,这样就可以根据条件执行处理了。

基本上,为真时执行该过程,但也可以描述为假时的过程。

常与测试命令结合使用

test命令基本用在if语句的条件表达式中。test 命令是专门用于条件求值的命令,求值结果只返回 0 或 1。

例如,在计算数值条件时,使用如下。

        $ test 35 -gt 30$ echo $?

上面的例子是一个条件表达式,判断35是否大于30,“echo $?”返回上一条命令的执行结果。结果是“0”和“35 大于 30 = true”。

请记住,“[]”在与 if 语句结合使用时用作缩写。

如何在 shell 脚本中使用 if 语句(基本)

如何在 shell 脚本中使用 if 语句(基本)

从这里开始,我将解释如何在 shell 脚本中使用 if 语句。首先,让我们看一下您绝对应该记住的基本用法。

if 语句的基本形式

if 语句的基本形式是“if [条件表达式]; then ~ fi”。具体写法如下。

        if [ 条件式 ]; then
    処理内容fi

“;” 在一行上编写多个命令时用作链接。由于 then 是与 if 命令不同的命令,所以需要分行写,但通常是通过连接来写,所以以这种形式记下来比较好。

此外,在描述“if [条件表达式]”时,需要为每个输入一个半角空格。如果连接If和[],或者连接条件表达式和[],会出现错误,所以要小心。

如果不满足条件,用“else”来描述处理。让我们用一个具体的例子来看看它是怎么写的。

        if [ 20 -gt 30 ]; then
    echo “Over 30”else
    echo “Under 30”fi

在此示例中,我们正在评估 20 是否大于 30。结果为假,执行else下面的命令,所以会输出“Under 30”。

要记住的基本比较运算符

比较运算符在条件表达式中描述并指示评估方法。它不仅用于数值,还用于比较字符串。典型的比较运算符总结如下。

・数值比较

比较运算符内容
数字 1 -eq 数字 2如果数字 1 和数字 2 相等,则为真 (=)
数字 1 -ne 数字 2如果数字 1 和数字 2 不相等则为真 (! =, <>)
数值 1 -gt 数值 2如果数字 1 大于数字 2,则为真 (>)
数字 1 -ge 数字 2如果数字 1 大于或等于数字 2,则为真 (> =)
数字 1 -lt 数字 2如果数字 1 小于数字 2,则为真 (<)
数字 1 -le 数字 2如果数字 1 小于或等于数字 2,则为真 (<=)

・字符串比较

比较运算符内容
字符串 1 = 字符串 2如果字符串 1 和字符串 2 相等,则为真
字符串 1! = 字符串 2如果字符串 1 和字符串 2 不相等,则为真
-n 字符串如果字符串的长度为 1 或更多,则为真
-z 字符串如果字符串的长度为 0,则为真

请注意,在将数字与字符串进行比较时,会使用不同的比较运算符。

用elif语句实现多个分支

您可以使用 elif 语句来实现多个条件分支。例如,如果输入的数字是 30,如果小于 30,如果不是,这里是条件分支的三个示例。

        read INTif [ $INT -eq 30 ]; then
    echo "Equal 30"elif [ $INT -lt 30 ]; then
    echo "Under 30"else
    echo "Other"fi

输入的数值存储在 INT 变量中,由 if 语句或 elif 语句判断。它是一种从上到下依次执行的机制,当返回true时,执行其中的处理。

输入30,输出“Equal 30”,输入20,输出“Under 30”,输入50,输出“Other”。

如何在 shell 脚本中使用 if 语句(应用程序)

如何在 shell 脚本中使用 if 语句(应用程序)

可以在 shell 脚本的 if 语句中设置更复杂的条件。作为如何使用 if 语句的应用,我们将介绍一个示例。

具有 AND、OR、NOT 的复杂条件表达式

AND、OR 和 NOT 用于通过组合多个条件表达式进行判断。例如,您可以创建一个条件表达式,例如“输入的数字不是 0”和“输入的数字是 30 或更少”。

        read INTif [ $INT -ne 0 ] && [ $INT -le 30 ]; then
    echo "True"else
    echo "False"fi

AND、OR 和 NOT 的含义和用法总结如下。

条件描述方法意义
与与-a 或 &&如果所有条件表达式的结果都为真,则返回
或者-o 或 ||如果任何条件表达式的结果为真,则返回真
不是!!颠倒真相并回归

将这些组合起来可以实现复杂的条件表达式,但必须小心,因为如果条件组合太多,可读性会降低。尽可能简单地组装条件表达式。

嵌套(嵌套结构)

if语句中存在if语句的嵌套结构(nested structure)也用于实现复杂的条件。前面使用 AND 的示例的嵌套结构如下。

        read INTif [ $INT -ne 0 ]; then
    if [ $INT -le 30 ]; then
        echo "True"
        exit 0
    fifiecho "False"

在上例的shell脚本中,如果输入的数字不为0,则前进到下一条if语句,如果为30以下,则显示“True”。exit 命令用于结束进程,如果显示“True”,则 shell 脚本按原样终止。

可以实现与使用 AND 时相同的条件分支,但必须小心,因为嵌套结构往往可读性较差。在大型shell脚本的情况下,可以说嵌套结构经常使用,因为条件复杂,但是在使用的时候,描述的时候要考虑可读性。

数字和字符串以外的条件表达式

至此,条件表达式已经比较了数值和字符串,但是在shell脚本的if语句中,也可以在条件表达式中设置文件的存在和命令的执行结果。在这种情况下使用的主要比较运算符如下。

比较运算符内容
-d 目标文件如果目标文件是目录则为真
-f 目标文件如果是文件则为真
-s 目标文件如果目标文件大小不为 0,则为真
文件 1 -ot 文件 2如果文件 1 早
  • 返回顶部
  • 15064770313
  • QQ在线
  • 微信二维码