• 【Shell】算术运算符、流程控制、函数使用、数组以及加载其它文件的变量


    文章目录

    1.6 Shell算术运算符

    1 简介

    2 例子

    1.7流程控制

    1 if else

    关系运算符

    2 for 循环

    3 while 语句

    4 无限循环

    5 case(switch)

    6 跳出循环

    1.8 函数使用

    1 函数的快速入门

    2 传递参数给函数

    1.9 数组

    1 定义数组

    2 读取数组

    3 遍历数组

    1.10 加载其它文件的变量

    1 简介

    2 练习

    1.6 Shell算术运算符

    1 简介

    Shell 和其他编程一样, 支持 包括:算术、关系、布尔、字符串等运算符。
    原生 bash 不支持 简单的数学运算,但是可以通过其他命令来实现,例如 expr
    expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
    例如,两个数相加:
    注意:
    表达式和运算符之间要有空格 ,例如 2+2 是不对的,必须写成 2 + 2
    完整的表达式要被 ` 包含,注意不是单引号,在 Esc 键下边。
    下表列出了常用的算术运算符,假定变量 a 10 ,变量 b 为 20:
    注意: 条件表达式要放在方括号之间,并且要有空格,例如 : [$a==$b] 是错误的,必须写成 [ $a == $b
    ]

    2 例子

    1.7流程控制

    1 if else

    1.1 if
    if 语句语法格式:

    demo

     

    末尾的 fifi 就是 if 倒过来拼写,后面还会遇到类似的。
    1.2 if else
    if else 语法格式:
    1.3 if else-if else
    if else-if else 语法格式:

    以下实例判断两个变量是否相等: 

    关系运算符

    关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
    下表列出了常用的关系运算符,假定变量 a 10 ,变量 b 20

    案例:

     

    2 for 循环

    2.1 格式

    2.2 随堂练习

     

    代码如下:

    3 while 语句

    while 循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式
    为:

    需求: 计算 1~100 的和

     运行脚本,输出:

    使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量,
    具体可查阅: Bash let 命令

    4 无限循环

    无限循环语法格式:

     

    5 case(switch)

    Shell case 语句为多选择语句。可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的
    命令。 case 语句格式如下:
    case 工作方式如上所示。取值后面必须为单词 in ,每一模式必须以右括号结束。取值可以为变量或常
    数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;
    取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果
    无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
    下面的脚本提示输入 1 4 ,与每一种模式进行匹配:

    输入不同的内容,会有不同的结果,例如:

    6 跳出循环

    在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环, Shell 使用两个命令来实现该功能:
    break continue
    6.1 break 命令
    break 命令允许跳出所有循环(终止执行后面的所有循环)。

     

    6.2 continue
    continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

    1.8 函数使用

    1 函数的快速入门

    格式

    可以带 function fun() 定义,也可以直接 fun() 定义 , 不带任何参数。
    参数返回,可以显示加: return 返回,如果不加,将以最后一条命令运行结果,作为返回
    值。 return 后跟数值 n(0-255)
    快速入门

    2 传递参数给函数

    Shell 中,调用函数时可以向其传递参数。在函数体内部,通过 的 形 式 来 获 取 参 数 的 值 , 例 如 , 1 表示
    第一个参数, $2 表示第二个参数 ...
    带参数的函数示例:

    输出结果:

     

    注意, 不 能 获 取 第 十 个 参 数 , 获 取 第 十 个 参 数 需 要 {10} 。当 n>=10 时,需要使用 ${n} 来获取参数。
    另外,还有几个特殊字符用来处理参数:
            

    1.9 数组

    1 定义数组

    数组中可以存放多个值。 Bash Shell 只支持一维数组 (不支持多维数组),初始化时不需要定义数组大
    小(。
    与大部分编程语言类似,数组元素的下标由 0 开始。
    Shell 数组用括号来表示,元素用 " 空格 " 符号分割开,语法格式如下:
    array_name=(value1 value2 value3 ... valuen)
    1.1 实例

    读取数组元素值的一般格式是:

    2.1 实例

    执行脚本,输出结果如下所示:  

    2.2 获取数组中的所有元素
    使用 @ * 可以获取数组中的所有元素,例如:

    执行脚本,输出结果如下所示:

     

    2.3 获取数组的长度
    获取数组长度的方法与获取字符串长度的方法相同,例如:

    执行脚本,输出结果如下所示:

    3 遍历数组

    3.1 方式一

    3.2 方式二

    1.10 加载其它文件的变量

    1 简介

    和其他语言一样, Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的
    文件。
    Shell 文件包含的语法格式如下:

     

    2 练习

    定义两个文件 test1.sh test2.sh ,在 test1 中定义一个变量 arr=(java c++ shell), test2 中对 arr 进行循
    环打印输出。
    第一步: vim test1.sh

    第二步: vim test2.sh

     

    第三步: 执行 test2.sh

     

    好处 :
    1. 数据源 和 业务处理 分离
    2. 复用 代码扩展性更强

     

  • 相关阅读:
    2.网络游戏逆向分析与漏洞攻防-游戏启动流程漏洞-项目搭建
    Prometheus 监控 Hyperledger Fabric 网络
    ubuntu安装和启动redis命令步骤及其配置文件redis.conf
    Flutter开发进阶之错误信息
    信息安全技术实验:利用 burp suite破解 web 后台
    企业转型升级之道:数字化转型,思想先行
    学习如何将Jenkins与UI测试报告完美整合,事半功倍,轻松获取高薪职位!
    Python数据攻略-Pandas时间序列数据处理
    【云原生进阶之PaaS中间件】第一章Redis-2.3.3集群模式
    PacBio HiFi 测序动植物基因组项目真实案例测评
  • 原文地址:https://blog.csdn.net/weixin_45481821/article/details/126901101