shell基本知识2

一、数组

  普通数组:只能用整数作为数组索引

  关联数组:可以用字符串作为数组索引

  1、普通数组

    (1)添加数组

      一次赋一个值

        格式:数组名[索引下标]=值

        array[0]=value0

        array[1]=value1

      一次赋多个值

        格式:数组名=(值1 值2 值3...)

        array=(value1 value2 value3...)  值之间是用空格隔开

    

    (2)查看关联数组

      格式:declare -a

    (3)读取数组

      格式:${数组名[索引下标]}

      echo ${array[0]}                 获取数组中的第一个值

      echo ${array[*]}/echo ${array[*]}        获取数组中的所有值

      echo ${#array[*]}或者echo ${#array[*]}      获取数组中所有元素的个数

      echo ${!array[@]}                获取数组中元素的索引下标

      echo ${array[@]:1:2}               访问指定的元素,1代表从下标为1的元素开始获取,2代表获取后面几个元素

  2、关联数组

   (1)添加数组

    1)一次赋一个值

      格式:数组名[索引/下标]=变量值

        array[a]=one

    2)一次赋多个值

      格式:数组名=([下标1/索引1]=值1 [下标2/索引2]=值2 [下标3/索引3]=值3...)

      array=([a]=one [b]=two [c]=three)

   (2)查看关联数组

      格式:declare -A

   (3)获取关联数组值

      格式:echo ${数组名[下标/索引]}

      echo ${array[0]}                 获取数组中的第一个值

      echo ${array[*]}/echo ${array[*]}        获取数组中的所有值

      echo ${#array[*]}或者echo ${#array[@]}      获取数组中所有元素的个数

      echo ${!array[@]}                获取数组中元素的索引下标

      echo ${array[@]:1:2}               访问指定的元素,1代表从下标为1的元素开始获取,2代表获取后面几个元素

    案例:统计web服务的不同连接状态的个数

       分析:查看网站连接状态的命令:ss -ant | grep :80  或者nestat -napt | grep :80

          统计不同连接状态时,循环统计,相同状态出现一次就+1

        

二、dirname和basename

  1、说明:取出一个目录下的目录和文件

    A=/home/xwxxh/桌面/shell/luck.tx

    #dirname $A    //取出目录

    #/home/xwxxh/桌面/shell

    #basename $A    //取出文件

    #luck.txt

  2、变量内容的删除和替换

    一个‘%’代表从右去掉一个/key/

    一个‘%%’代表从右往左最大去掉/key/

    一个‘#’代表从左往右去掉一个/key/

    一个‘##’代表从左往右最大去掉/key/

    案例:url=www.taobao.com.cn

       #echo ${#url}      //获取变量的长度

       #17

       #echo ${url%.*}     //从右往左去掉第一个.后面的所有内容

       #www.taobao.com

       #echo ${url%%.*}     //从右往左去掉最后一个.后面的所有内容

       #www

    一个‘/’代表从左往右替换第一个

    一个‘//’代表从左往右所有都替换

    案例:url=www.taobaobao.com

    #echo ${url/a/A}

    #www.tAobaobao.com

    #echo ${url//a/A}

    #www.tAobAobAo.com

原文地址:https://www.cnblogs.com/xwxxh/p/13794148.html