zoukankan      html  css  js  c++  java
  • shell脚本day08-数组与字符串

    数组:一段连续的变量,一段连续的内存存储空间;解决变量过多的问题,在使用用一类变量中,外面不需要去定义多个变量,而是以数组的方式来定义。

      1.数组名

      2.索引

      3.值

    一、如何定义数组:

      declare -l 定义整数(声明)

      declare -a 定义数组 array

      declare -A 定义嵌套的数组

    二、如何给数组赋值

      array=0

      1.array[0]=1 (在计算机语言中,索引一般从开始计算;索引并不一定是数字:key-valuearray[jack]=3m;shell中数组可以赋值可以跳跃)

      2.array=(/var/log/*log)

        做遍历

        array=(a c n e)

      3.array= ('jack=3m''rose=2m'...)

      4.通过read命令来赋值

        read -t 延迟 -p “指定说明” -a 输入数组所需的变量值

        read -a a b c d e

    三、如何调用数值

      ${变量名}

      ${数组名[索引]} 定义的是那个索引,看到的就是对应的索引的值

      ${数组名} 默认调用索引=0的值  $array

      ${数组名[*]}或者${数组名[@]} 调用数组内所有的值

        

    a=(/var/log/*.log)
    for i in{0...7};do
        if [ $[$i/2] -eq 0]
            line='wc -l ${a[$i]} | cat -d ' '-f1'
            sum+=$line
    done
    echo $sum

      1.调用数组的数组的长度

      lenth{"变量"}

      ${#变量[*]}或$[#变量[@]]

      2.添加数组值的特殊方法

      $[变量名[${变量名[@]}]='值']

    五、关于数组的其他操作:

      数组切片

      ${变量名[@]:偏移量:所需取出的值的个数}

       删除 unset ${变量名[索引]}

        注意:删除的是索引对应值

    六、字符串

      printf

      name=jack

      heigth=180

      python($s,身高为%d)%(name,heigth)

        %s

        %d

        %f

        %[num]s 指定该字符串占位的宽度

        %-[num]s 代表左对齐

    1.字符串切片

      数组切片:$[变量[@]:偏移量:数值个数]

      字符串:$[变量名:偏移量:数值个数]

          $[变量名:-数值个数] 【注意:冒号后面一定要加空格】

            $[变量名:word]  //默认赋值

            read"sasas":test

            [-z $test]&&test=abc

    2.基于模式取字串

      从左到右

      $[变量名#pattern] 删除PATTERN第一次匹配到的字符

      从右到左

      $[变量名%pattern]

    3.字符替换

      $[变量名/pattern/替换后的字符]  【pattern并不是正则表达式,而是文件通配符】

        匹配到的第一个pattern来进行替换

      $[变量名//pattern/替换后的字符串]

        匹配所有的pattern并进行替换

      $[变量名/#pattern/替换后的字符串]   $[变量名/%pattern/替换后的字符串]

    4.查找并删除

      替换中,不能指定替换的字符串,即为删除

      $[变量名/pattern]

      $[变量名//pattern]

      $[变量名/#pattern]

      $[变量名/@pattern]

    5.替换大小写

      tr 替换大小写

      tr [:lower:][:upper:]<filename

      $[变量名^ ^]将字符全部替换为大写

      $[变量名,,]将字符全部替换为小写

    6.变量赋值

      变量名 1=$[变量名2:-word] 注意没有空格 当变量2没有值,就将word默认值赋值给变量1

      变量名 1=$[变量名2:+word]  当变量2有值的情况下,才将word默认值赋值给变量1

  • 相关阅读:
    【Codeforces 429D】 Tricky Function
    【HDU 1007】 Quoit Design
    S3C2440开发环境搭建(Ubuntu)
    ubuntu 14.04使用root登陆出现错误“Error found when loading /root/.profile”解决
    Ubuntu 14.04下NFS安装配置
    gcc及其选项详解
    class_create(),class_device_create()创建/dev/xxx 名字
    class_create(),device_create自动创建设备文件结点
    ZedGraph 总论
    ZedGraph类库之基本教程篇
  • 原文地址:https://www.cnblogs.com/ljx1/p/11391174.html
Copyright © 2011-2022 走看看