• (三)Shell编程之数据类型


    一、shell字符串

    字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其他类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。

    (1)单引号

    单引号字符串的限制:  

    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    • 单引号字符中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。 

    (二)双引号

    双引号的优点:

    • 双引号里可以有变量
    • 双引号里可以出现转义字符

     

    (三)拼接字符串

     也可以包裹在一个字符串里

     

    但是使用单引号不能包裹在一个字符串里 ,那样子就无法转义,单引号可以分多个字符串写

    1. work=teacher
    2. # 单引号
    3. # 对的写法
    4. echo 'hello,'$work'!'
    5. # 错的写法
    6. echo 'hello,$work!'
    7. # 双引号
    8. # 写法1
    9. echo "hello,"$work"!"
    10. # 写法2
    11. echo "hello,$work!"

     

    (四)转义

    某些字符在Bash里有特殊的含义(比如 $,&,*)

    当我们输入 echo $work , 他会调用这个work变量,如果没有这个变量就默认给这个变量设置为空字符串。

    所以如果我们就是单纯的想要打印 $work,不是在引用变量,那这个时候我们该怎么做?这个时候我们就要去“转义”(escape)。

    用法其实跟python中的用法其实是一样的,添加一个反斜杠 \,我们也可以使用单引号,单引号对立面的内容不会做任何的转义

    下面我们举个栗子🌰~

     


    反斜杠本身也是特殊字符,如果想要原样输出反斜杠,就需要多它自身转义,连续使用两个反斜杠(\\) 


    反斜杠除了用于转义,还可以表示一些不可打印的字符。

    • \a    响铃
    • \b    退格
    • \n    换行
    • \r     回车
    • \t     制表符 

    (五)字符串常规操作

    ① 获取字符串长度

    1. string="abcd"
    2. echo ${#string}
    3. # 输出结果
    4. 4

    ② 提取子字符串

    echo ${string:3:2}     

    第一个数字:光标从左往右开始数,偏移几个字符;

    第二个数字:取几个字符

    TODO:第一个字符的索引值0

    1. # 从下面的字符串中取出最帅2个字
    2. string="数学班最帅的老师王大侠"
    3. echo ${string:3:2}

     

    ③ 查找子字符串

    查找字符I或者o的位置(那个字母先出现就计算哪个):

    1. string="hello world!"
    2. echo `expr index "string" lo`

    二、shell数组

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

    类似于C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算数表达式,其值应大于或等于0。

    (1)数组的定义

    在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:

    数组名=(值1 值2 ... 值n)

    (2)读取数组

    1. array_name=(value0 value1 value2)
    2. # 方法1,默认只能拿到第一个值
    3. echo $array_name
    4. # 打印结果
    5. value0
    6. # ----------------------------------
    7. # 方法2,根据索引取值
    8. echo ${array_name[0]}
    9. echo ${array_name[1]}
    10. # 打印结果
    11. value0
    12. value1
    13. # ----------------------------------
    14. # 方法3,获取数组中所有的值,索引位使用 * 或者 @
    15. echo ${array_name[*]}
    16. echo ${array_name[@]}
    17. # 打印结果
    18. value0 value1 value2
    19. value0 value1 value2

    (3)获取数组的长度 

    第一个是获取数组的长度,所以是3;

    第二个其实就是先获取索引为1的值,然后再计算这个值的长度,所以是6

     

     

  • 相关阅读:
    什么是网关?网关有什么作用?
    Android Gradle 命令打包AAR
    【小白专用】PHP中的JSON转换操作指南 23.11.06
    PY32F003F18之DMA串口
    Nacos注册中心
    缓存更新策略
    OpenAIGPT-4.5提前曝光?
    Linux下延时一定时间,又不挂起程序。
    芯片数字后端设计入门书单推荐(可下载)
    进阶JAVA篇- LocalDate 类与 LocalTime 类、LocalDateTime 类的常用API(六)
  • 原文地址:https://blog.csdn.net/Sean_0819/article/details/126841120