zoukankan      html  css  js  c++  java
  • 8.20 数组与字符

    数组与字符串

    数组
        数组说白了就是一段连续的变量,一段连续的内存存储空间
        解决:变量过多的问题;在同一类变量中,我们不需要去定义多个名字,而是以数组的方式来定义;(列表)
      1、数组名
      2、索引
      3、值
      如何去定义数组:
        declare -i 定义整数(声明)
        declare -a 定义数组
        declare -A 定义数嵌套

      如何给数组赋值:
        array=()
        1、array[0]=刘源 (在计算机语言中,索引一般从0开始计算)
        (索引并不一定是数字:key-value array[刘源]=1.80m)
        (shell中数组赋值,可以跳跃(跳跃赋值))
        2、array=(var/log/*.log)
        做遍历
        array=(a b c d e)
        3、array=('刘源'='180' ' '=' '...)
        4、通过read命令来赋值
        read -t 延迟 -p “指定说明” -a 输入数组所需的变量值
        read -a a b c d e
        如何去调用数组:
        ${变量名}
        ${数组名[索引]} 定义的是哪个索引,看的是对应索引指定的值
        ${数组名} 默认调用索引=0的值
        ${数组名[*]}或者${数组名[@]} 调用数组内所有的值 $* $@

      1、调用数组的数组长度
        length("变量")
        $[#变量名[*]]或者$[#变量名[@]]
      2、添加数组值的特殊方式:
        ${变量名[#变量名[@]]}="值"或者${变量名[#变量名[*]]}

      关于数组的其他操作
        数组切片
        ${变量名[@]:偏移量:所需要取出值的个数}
        ${a[*]:2:4}
        删除值
        unset ${变量名[索引]}
        注意:删除的是索引所对应的的值,索引没有删除
        【知道值,如何查看索引】

    字符串
      printf
      python (%s)%
      占位符
      %s
      %d
      %f

      %[num]s 指定该字符占位的宽度
      %-[num]s 代表左对齐

      1、字符串切片
        $[变量名:偏移量:数值个数]
        $[变量名: -数值个数] 注意:冒号后面一定要加空格
        $[变量名: -word] 默认赋值
        read "sasas:"test
        [ -z test ] && test=abc
      2、基于模式取子字符串
        从左至右
        ${变量名#pattern} 删除pattern第一次匹配到的字串
        ${变量名##pattern} 删除所有pattern匹配到的字串

        从右至左
        ${变量名%pattern}
        ${变量名%%pattern}

        思考:取url中IP(域名)  

      3、字符替换   

        ${变量名/pattern/替换后的字符串} 【pattern并不是正则表达式,而是文件通配符】
        匹配第一个pattern,来进行替换
        ${变量名//pattern/替换后的字符串}
        匹配所有哦pattern,并进行替换
        ${变量名/#pattern/替换后的字符串}
        指定匹配行首必须是 pattern ,才会替换
        ${变量名/%pattern/替换后的字符串}
        指定匹配行尾必须是 pattern , 才会替换

        注意: / 分隔符,不能替换为(# % 等特殊字符 ,和sed 不一样)

      4、查找并删除

        替换中,不指定替换字符串,即为删除
        ${变量名/pattern}
        ${变量名//pattern}
        ${变量名/#pattern}
        ${变量名/%pattern}

      5、替换大小写
        tr 替换大小写
        tr[[:lower:]][[:upper:]]

        ${变量名^^}将字符串全部替换为大写
        ${变量名,,}将字符串全部替换为小写

      6、变量赋值
        变量名1=${变量名2:-word} 注意没有空格!输入默认值的作用,变量名2没有值,就将word默认值赋值给变量1
        变量名1=${变量名2:+word} 变量2有值的情况下才将word默认值赋值给变量1
        ${变量:=word} 如果变量没有值,就将word赋值给变量,有值,则使用原来的值


      7、脚本引用其他文件中的变量如何实现
        filename1
        vim filename1
        a=1
        b=2
        :wq
        vim filename1.sh
        ./全路径/filename或者source /全路径/filename
        c=$[$a+$b]
        echo $c
        :wq

        bash filename1.sh
      8、两个命令
        mktemp 创建临时文件以及目录 temp - - /tmp
        为了避免大家取得文件名重复;mktemp 名字.XXXXXX (代表随机数(子母和数字))
        默认创建的是随机的文件
        -d 创建的是随机的目录

        file=`mktemp a.XXXX`

        install 复制或删除文件,用法同copy
        优点:可以指定权限来复制文件
        用法:
        install a文件 b目录 //复制a文件到b目录并恢复初始权限
        -t 源目地址对换
        -d 创建目录
        -m MODE
        -o OWNER
        -g GROUP

  • 相关阅读:
    Docker镜像与仓库(四)
    Docker网络与存储(三)
    Docker基本使用(一)
    虚拟化KVM之优化(三)
    修改CENTOS7的网卡ens33修改为eth0
    虚拟化KVM之安装(二)
    虚拟化KVM之概述(一)
    Python不同版本打包程序为.exe文件
    JSON
    同源策略(same-origin policy)及三种跨域方法
  • 原文地址:https://www.cnblogs.com/liuyuanzzz/p/11386710.html
Copyright © 2011-2022 走看看