• shell脚本学习记录1(运算符)


    Shell 传递参数

    我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

    以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):

    1. #!/bin/bash
    2. echo "shell 传递参数!"
    3. echo "执行的文件名:$0"
    4. echo "第一个参数为:$1"
    5. echo "第二个参数为:$2"
    6. echo "第三个参数为:$3"

     另外,还有几个特殊字符用来处理参数:

    1. #!/bin/bash
    2. echo "shell 传递参数!"
    3. echo "执行的文件名:$1"
    4. echo "参数个数:$#"
    5. echo "传递的参数作为一个字符串显示:$*"

    $* 与 $@ 区别:

    • 相同点:都是引用所有参数。
    • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

    Shell 数组(进阶)

    关联数组

    Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。

    关联数组使用 declare 命令来声明,语法格式如下:

    declare -A array_name

    -A 选项就是用于声明一个关联数组。

    关联数组的键是唯一的。

    以下实例我们创建一个关联数组 site,一个关联数组 site1,并用不同方式创建不同的键值:

    1. #!/bin/bash
    2. #创建关联数组,并创建不同的键值
    3. declare -A site=(["baidu"]="www.baidu.com" ["shougou"]="www.shougou.com" ["huohu"]="www.huohu.com")
    4. #先声明一个关联数组,再设置键和值
    5. declare -A site1
    6. site1["google"]="www.google.com"
    7. site1["runoob"]="www.runoob.com"
    8. site1["taobao"]="www.taobao.com"
    9. #访问shell数组
    10. echo ${site[*]}
    11. echo ${site1[@]}
    12. echo ${site["baidu"]}

    在数组前加一个感叹号 ! 可以获取数组的所有键,例如:

    1. declare -A site
    2. site["google"]="www.google.com"
    3. site["runoob"]="www.runoob.com"
    4. site["taobao"]="www.taobao.com"
    5. echo "数组的键为: ${!site[*]}"
    6. echo "数组的键为: ${!site[@]}"

     Shell 基本运算符

    Shell 和其他编程语言一样,支持多种运算符

    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

    1. #!/bin/bash
    2. val=`expr 2 + 3`
    3. echo "两个数的和为:$val"

    注意

    • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
    • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

     算术运算符

    1. #!/bin/bash
    2. a=10
    3. b=20
    4. val=`expr $a + $b`
    5. echo "a + b : $val"
    6. val=`expr $a - $b`
    7. echo "a - b : $val"
    8. val=`expr $a \* $b`
    9. echo "a * b : $val"
    10. val=`expr $b / $a`
    11. echo "b / a : $val"
    12. val=`expr $b % $a`
    13. echo "b % a : $val"
    14. if [ $a == $b ]
    15. then
    16. echo "a 等于 b"
    17. fi
    18. if [ $a != $b ]
    19. then
    20. echo "a 不等于 b"
    21. fi

    注意:

    • 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
    • if...then...fi 是条件语句

     关系运算符

    关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

     布尔运算符

     逻辑运算符

     字符串运算符

    文件测试运算符 

    文件测试运算符用于检测 Unix 文件的各种属性。

     

     参考:Shell 基本运算符 | 菜鸟教程 (runoob.com)

  • 相关阅读:
    【电源专题】案例:不导这颗MOS管的原因是在电路上不通用?
    Redis原理篇——五种基本数据类型
    过期视频怎么恢复?如何从手机、电脑和其他设备中恢复?
    用户中心 -- 代码理解
    编码技巧——MongoDB的过期时间
    JavaWeb实战之Response重定向运用以及原理详解
    jQuery 中的 AJAX(1 get 请求,2 post 请求,3 通用方法ajax)
    线上mysql表字段加不了Fail to get MDL on replica during DDL synchronize,排查记录
    Nuxt - Vant 2 Tabbar 标签栏(详细使用教程)
    【前端】JavaScript-DOM基础1
  • 原文地址:https://blog.csdn.net/m0_70987863/article/details/131144355