03- Shell脚本学习—字符串和数组

    单双引号的区别:

    • 双引号里可以有变量,单引号则原样输出;
    • 双引号里可以出现转义字符,单引号则原样输出;
    • 单引号字串中不能出现单引号。

    输出:

    1. iloveyou
    2. i,love,you
    1. #!/bin/bash/
    2. str='i love you'
    3. echo ${#str}
    4. # 输出:10
    1. #!/bin/bash/
    2. echo ${str:1} # 从第1个截取到末尾。注意从0开始。
    3. echo ${str:2:2} # 从第2个截取2个。
    4. echo ${str:0} # 全部截取。
    5. echo ${str:-3} # 负数无效,视为0。

    输出:

    1. love you
    2. lo
    3. i love you

    输出:

    1. 3
    2. 3
    3. 4
    4. 10
    5. i love

    注意字符串变量需要加双引号。

    1. STRING : REGEXP anchored pattern match of REGEXP in STRING
    2. match STRING REGEXP same as STRING : REGEXP
    3. substr STRING POS LENGTH #从STRING中POS位置开始截取LENGTH个字符。POS索引是从1开始的。
    4. index STRING CHARS #在STRING中查找字符CHARS首次出现的位置,没有找到返回0

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

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

    1. array_name=(value1 value2 ... valuen)

    例如:

    1. array_name=(value0 value1 value2 value3)

    或者

    还可以单独定义数组的各个分量:

    1. array_name[0]=value0
    2. array_name[1]=value1

    下面来读取数组:

    1. echo ${array_name[2]} #读取下标为2的元素
    2. echo ${array_name[*]} #读取所有元素
    3. echo ${array_name[@]} #读取所有元素
    4. echo ${#array_name[*]} #获取数组长度
    5. echo ${#array_name[@]} #获取数组长度
    6. echo ${#array_name[1]} #获取数组中单个元素的长度

    输出:

    1. value2
    2. value0 value1 value2 value3
    3. value0 value1 value2 value3
    4. 4
    5. 4
    6. 6

    对比shell里字符串和数组,我们发现:

    字符串

    1. str="hello"
    2. ${#str} # 读取字符串长度
    3. echo ${str} # 读取字符串全部

    数组: