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.基于模式取字串

  从左到右

猜你喜欢

转载自www.cnblogs.com/ljx1/p/11391174.html