马哥Linux学习笔记16-3bash编程之数组和字符串处理

  • bash脚本编程:
    • 变量:存储单个元素的内存空间
    • 数组:存储多个元素的连续的内存空间
      数组名
      索引:编号从0开始,属于数值索引
      注意:索引也可支持使用自定义的格式,而不仅仅是数值格式。bash的数组支持稀疏格式
      引用数组中的元素:${ARRAY_NAME[INDEX]}
    • 声明数组:
      declare -a ARRAY_NAME
      declare -A ARRAY_NAME:关联数组
    • 数组元素的赋值:
      1 一次只赋值一个元素:
      ARRAY_NAME[INDEX]=VALUE
      weekdays[0]=“Sunday”
      weekdays[4]=“Thursday”
      2 一次赋值全部元素:
      ARRAY_NAME=(“VAL1” “VAL2” “VAL3” …)
      3 只赋值特定元素:
      ARRAY_NAME=([0]=“VAL1” [3]=“VAL2” …)
      4 read -a ARRAY
    • 引用数组元素:¥{ARRAY_NAME[INDEX]}
      注意:省略[INDEX]表示引用下标为0的元素
    • 数组的长度(数组中元素的个数):¥{#ARRAY_NAME[*]},¥{ARRAY_NAME[@]}
    • 引用数组中的元素:
      所有元素:¥{ARRAY[@]},¥{ARRAY[*]}
      数组切片:¥{ARRAY[@]:offset:number}
      offset:要跳过的元素个数
      number:要取出的元素个数,偏移量之后的所有元素:¥{ARRAY[@]:offset}:
    • 向数组中追加元素:
      ARRAY[${ARRAY[*]}]
    • 删除数组中的某元素:
      unset ARRAY[INDEX]
    • 关联数组:
      declare -A ARRAY_NAME
      ARRAY_NAME=([index_name1]=‘val1’ [index_name]=‘val2’ …)
    • bash的字符串处理工具:
      • 字符串切片:
        ¥{var:offset:number}
        取字符串的最右侧几个字符:¥{var:-lengh}
        注意:冒号后必须有一空白字符
      • 基于模式取子串:
        ¥{var#word}:其中word可以是指定的任意字符,功能:自左而右,查找var变量所存储的字符串中,第一次出现的worod,删除字符串开头至第一次出现word字符之间的所有字符
        ¥{var##*word}:同上,不过,删除的是字符串开头至最后一次word指定的字符之间的所有内容
        ¥{var%word*}:其中word可以是指定的任意字符,功能:自右而左,查找var变量所存储的字符串中,第一次出现的worod,删除字符串最后一个字符至第一次出现word字符之间的所有字符
        ¥{var%%word
        }:同上,只不过删除字符串最后一个字符向左至第一次出现word字符之间的所有字符
      • 查找替换:
        ¥{var/pattern/substi}:查找var所表示的字符串中,第一次被pattern所匹配的字符串,以substi替换之
        ¥{var//pattern/substi}: 查找var所表示的字符串中,所有能被pattern所匹配的字符串,以substi替换之
        ¥{var/#pattern/substi}: 查找var所表示的字符串中,行首被pattern所匹配的字符串,以substi替换之
        ¥{var/%pattern/substi}: 查找var所表示的字符串中,行尾被pattern所匹配的字符串,以substi替换之
      • 查找并删除:
        ¥{var/pattern}:查找var所表示的字符串中,删除第一次被pattern所匹配到的字符串
        ¥{var//pattern}:
        ¥{var/#pattern}:
        ¥{var/%pattern}:
      • 字符大小写转换:
        ¥{var^^}:把var中的所有小写字母转换为大写
        ¥{var,,}:把var中的所有大写字母转换为小写
      • 变量赋值:
        ¥{var:-value}:如果var为空或未设置,那么返回value,否则,则返回var的值
        ¥{var:=value}:如果var为空或未设置,那么返回value,并将value赋值给var,否则,则返回var的值
        ¥{var:+value}:如果var不空,则返回value
        ¥{var:?error_info}:如果var为空或未设置,那么返回error_info,否则,则返回var的值
    • 为脚本程序使用配置文件:
      1 定义文本文件,每行定义”name=value“
      2 在脚本中source此文件即可
    • 命令:
      • mktemp命令:
        mktemp [OPTION]…[TEMPLATE]
        TEMPLATE:filename.XXX
        XXX至少要出现三个
        OPTION:
        -d:创建临时目录
        –tmpdir=/path/to/somedir:指明临时文件目录位置
      • install命令:
        install [OPTION]…[-T] SOURCE DEST
        install [OPTION]… SOURCE…DIRECTORY
        install [OPTION]… -t DIRECTORY SOURCE…
        install [OPTION]… -d DIRECTORY…
        选项:
        -m MODE
        -o OWNER
        -g GROUP

你可能感兴趣的:(马哥Linux学习笔记16-3bash编程之数组和字符串处理)