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

      

    数组

      数组说白了就是一段连续的变量,一段连续的内存存储空间

      解决变量过多的问题,在同一类变量中,我们不需要去定义多个名字,而是以数组的方式来定义

      如何去定义数组:

        declare -i 定义整数

        declare -a 定义数组

        declare -A 定义嵌套的数组【不常用】

      [python 和 shell]

      array=(值)

      空数组:array=()

      给数组赋值:

       1.array[0]=1

        (在计算机语言中,索引一般从0开始计算)

        (索引不一定是数字:key-value  Array[崔广炘] = 1.73m)

        (sehll中数组可以跳跃赋值)

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

        做遍历

        array=(a b c d)

       3.array=('a=187' 'b=189')

       4.通过read命令来赋值

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

        read -a a b c d

      如何调用数组:

        ${变量名}

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

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

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

    统计/var/log/*.log中索引为偶数的文件的行数的和:

      a=(/var/log//*.log)

      for i in {1..7};do

        if [ $[$i%2] -eq 0 ];then

          line=`wc -l ${a[$i]} | cut -d" " -f1`

          sum+=$line

        fi

      done

      echo $sum

     1、调用数组的数组长度

      length("变量")

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

    2、添加数组值的特殊方式

      ${变量名[${#变量名[@]}]}="值"

    关于数组的其他操作:

      数组切片

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

          ${a[*}:2:4}

          不加取出的个数,就是切到尾部

      删除值

        unset${a[2]}

        删除的是索引所对应的值,不是索引

    练习:

      生成10个随机数,打印其中的最大值

    declare -a a

    declare -i max=0

    for i in `seq 0 9`;do

      ran=$RANDOM

      a[$i]=$ran

      [ $ran -gt $max ] && max=$ran

    done

    echo ${a[@]}

    echo $max

    生成十个数,进行排序

    a=()

    b=()

    c=0

    for i in `seq 0 9`;do

      a[$i]=$RANDOM

      if [ ${a[]$i} -gt $c ];then

        c=$

    done

    字符串:

      print 格式化输出

      

    练习:

    2.

    #!/bin/bash
    # Author: 埃希123
    # Blog: https://www.cnblogs.com/lyali/
    # Time: 2019-08-10 07:32:39
    # Name: kuwenjian.sh
    # Version: v1.0
    # Description: This is a Script.
    a=()
    read -p "请输入你需要复制的命令:" Command
    if [ -z $Command ];then
            echo "eg.cat"
    else
            C=`which $Command | tail -1`
            a=`ldd $C | grep -o "/lib64/.*[[:space:]]"`
            for i in `seq 0 $[${#a[*]}-1]`;do
                    /bin/cp $C /adc/bin/
                    /bin/cp ${a[$i]} /adc/lib64/
            done
    fi

     3.

  • 相关阅读:
    equals 和 == 的区别
    jenkins
    状态码
    对控制反转和依赖注入的突然顿悟
    分布式事务与Seate框架
    synchronized原理
    VS 添加 Sqlserver
    C# 生成二维码
    jQuery /Date(0000000000000)/日期转换
    什么是Java的序列化,在哪些程序中见过Java序列化?
  • 原文地址:https://www.cnblogs.com/lyali/p/11381341.html
Copyright © 2011-2022 走看看