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

    数组与字符串

    数组:数组就是一段连续得变量,一段连续得内存存储空间

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

          1、数组名 2、索引 3、值

    如何去定义数组:

          declare -i 定义整数(申明)

          declare -a定义数组array

          declare -A 定义嵌套数组

    如何给数组赋值:

          array =0

          array[0]=a (在计算机语言中,索引一般从0开始计算)

    (索引并不一定是数字,key-value array[a]=1)

    (shell中数组赋值,可以跳跃(跳跃赋值))

          array=(/var/log*.log) 做遍历

          array=(a b c d e)

          array=(‘豆腐=233’‘豆腐花=122’)

    通过read命令来赋值:

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

          read –a a b c d e

    如何去调用数组:

          ${变量名}

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

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

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

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

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

          declare –i sum=0

                for I in {0..7};do

                       if  [$[$i/2]-eq 0]

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

                           sum+=$line  #sum+=`wc –l ${a[$i]} |cut –d’ ’ –f1`

                      fi

          done

          echo”行数总和为:$sum”

    1、调用数组的数组长度

          Length(“变量”)

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

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

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

    关于数组的其他操作

          数组切片  ${变量名[@]:偏移量:所需要取出值得个数}

          echo ${a[*]:2:4}

          ${变量名[@]:偏移量}

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

    注意:删除是索引所对得值,而没有带着索引一块删除;

          declare –a a

          declare –i max=0

                  for i in` seq 0 9` ;do

                      a[$i]=$RANDOM

                      [${a[$i]}  –gt  $max]&& max=${a[$i]}

          done

          echo ${a[@]}

          echo “最大值为:

    字符串:%s  %d  %f

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

          %-[num]s 代表左对齐

    字符串切片:

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

          字符串:${变量名:偏移量:数值个数}

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

                 ${变量名:-word} 默认赋值的意思

    基于模式取子字符串

          ${变量名#*pattren}   删除pattern第一次匹配到的字串

          ${变量名##*pattren}  删除所有pattern匹配到的字串  */任意字符到斜杠

          ${变量名%pattren}

          ${变量名%%pattern}

    字符替换

          ${变量名/pattern/替换后的字符串}

         

          ${变量名//pattern/替换后的字符串}  匹配所有的pattern,并进行替换

          ${变量名/#pattern/替换后的字符串}  指定匹配行首必须是pattern,才会替换

          ${变量名/%pattern/替换后的字符串}  指定匹配行尾必须是pattern,才会替换

    【注意:/分隔符,不能替换为(#%等特殊字符)】

    大小写替换

          tr 替换大小写

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

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

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

    6、变量赋值

          ${变量名:-word} 注意没有空格

          ${变量名:+word}

    7、脚本应用其他文件中的变量,如何实现?

     

    练习:修改hostname,定义—个hostname文件 name=xxx,hostname.sh

     

    8、两个命令

          mktemp 创建临时文件以及目录 temp--/tmp

                 避免大家取的文件名字重复; mktemp 名字 xxxxx 代表随机数(字母和数字)

                 默认创建随机的文件

                 -d 创建的就是随机的目录

          install   复制或删除文件,用法同copy

                 优点可以指定权限来复制文件

                 用法:intall a文件b目录 //复制a文件到b目录,并恢复初始权限(文件:755 目录:644)

    chroot 切换根目录;

  • 相关阅读:
    Mvaen系列第5篇:私服详解(本文内容来自 路人甲java)
    springmvc和springboot做分页查询
    maven详解4:仓库详解
    Maven系列3:详解maven解决依赖问题(该系列从 路人甲java 学习)
    maven学习2:安装、配置、mvn运行(本系列从 路人甲java 学习)
    maven学习系列1:maven入门
    日期格式转换
    springmvc、springboot配置静态资源
    反射
    java中运行python脚本
  • 原文地址:https://www.cnblogs.com/wsq-qq/p/11384910.html
Copyright © 2011-2022 走看看