• shell_Day08


    数组与字符串:

    数组

      数组就是一段连续的变量,一段连续的内存存储空间
      为了解决变量过多的问题; 在同一类变量中,我们不需要去定义多个名字,而是以数组的方式来定义;(列表)
      数组名[索引]=值

    定义数组

      declare -i 定义整数 (申明)
      declare -a 定义数组array
      declare -A 定义嵌套的数组

      array[8]=1
        在计算机语言中,索引一般从0开始计算
        索引并不一定是数字
        shell中数组赋值,可以跳跃(跳跃赋值)
      array=(/var/log/*.log)
        做遍历
        array=(a b c d e) 
      array=('a=187' 'b=186' ... )

    通过read命令来赋值

      read -t 延迟 -p "指定说明" -a 输入数组所需的变量值
      read -a a b c d e

    调用数组

      ${变量名}
      ${数组名[索引]}  定义的是哪个索引,就看到是对应索引指定的值
      ${数组名}  默认调用 索引=0 的值  $array(最好不要这样写)
      ${数组名[*]} 或者 ${数组名[@]} 调用数组内所有的值 $* $@
            

    调用数组的数组长度

      length("变量")
      ${#变量名[*]} 或者 ${#变量名[@]}

    添加数组值的特殊方式

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

    关于数组的其他操作

      数组切片
        ${变量名[@]:偏移量:所需要取出值的个数}
        echo ${a[*]:2:4}
        ${变量名[@]:偏移量} 
      删除值
        unset ${变量名[索引]} 
      注意:删除是索引所对的值,而没有带着索引一块删除;
      修改值
        a[3]=c
        a[3]=d 覆盖即修改
     

    字符串:


     python  ( %s , %d ) % (name, hiaght)
      输出: aa,1832
      %s
      %d
      %f
      
      %[num]s  指定该字符串占位的宽度
      %-[num]s  代表左对齐

      

    字符串切片:

      数组切片:${变量名[@]:偏移量:数值个数}
      字符串:${变量名:偏移量:数值个数}
        ${变量名: -数值个数} 【*注意:冒号后面一定要加空格*】
        ${变量名:-word}   默认赋值的意思
        read "sasasa:" test
        [ -z $test ] && test=abc

    基于模式取子字符串

      从左自右
        ${变量名#pattern}   删除pattern第一次匹配到的字串
        ${变量名##pattern}  删除所有pattern匹配到的字串
      
      从右自左
        ${变量名%pattern}
        ${变量名%%pattern}

    字符替换

      ${变量名/pattern/替换后的字符串} 【pattern并不是正则表达式,而是文件通配符】
        匹配第一个pattern,来进行替换
      ${变量名//pattern/替换后的字符串}
        匹配所有哦pattern,并进行替换
      ${变量名/#pattern/替换后的字符串}
        指定匹配行首必须是 pattern ,才会替换
      ${变量名/%pattern/替换后的字符串}
        指定匹配行尾必须是 pattern , 才会替换
      注意: /  分隔符,不能替换为(# % 等特殊字符 ,和sed 不一样)

    查找并删除

      替换中,不指定替换字符串,即为删除
      ${变量名/pattern}
      ${变量名//pattern}
      ${变量名/#pattern}
      ${变量名/%pattern}

    替换大小写

      tr  替换大小写
      tr [[:lower:]] [[:upper:]] < filename
      ${变量名^^}   将字符串全部替换为大写
      ${变量名,,}      将字符串全部替换为小写

    变量赋值

      变量名1=${变量名2:-word}  注意没有空格!   输入默认值的作用 , 变量2 没有值,就将 word 默认值赋值给 变量1
      变量名1=${变量名2:+word}  不常用   变量2 有值的情况下,才将 word默认值赋值给变量1
      ${变量:=word}   如果变量没有值,就将word赋值给变量,有值,则使用原来的值 
      变量1=${变量2:?error_infor}  如果变量2 没有值,输出erro_infor错误信息

    两个命令

      mktemp  创建临时文件以及目录  temp -- /tmp
      避免取的文件名字重复;mktemp 名字.XXXXXX (XX代表随机数(字母和数字))
      默认创建是随机的文件
        -d  创建的就是随机的 目录
        file=`mktemp a.XXXX`
        install   复制或删除文件,用法同copy
      优点可以指定权限来复制文件
      用法:intall a文件 b目录     //复制a文件到b目录,并回复初始权限(文件:755 目录:644)
        -t   源目对换
        -d  创建
        -m MODE
        -o OWNER
        -g GROUP
     

    虚拟化的准备知识:系统的启动原理

      读取系统--读取磁盘:前提就是必须先加载磁盘的驱动程序
      挂载 虚拟根(img虚根文件ramdisk)
      虚根文件文件挂上以后,在grub1.5加载磁盘驱动;
      通过chroot将ramdisk上面的临时“根”切换到磁盘上面
      操作系统:vmlinuz的内核、ramdisk.img
     
     
  • 相关阅读:
    jekins接通gitee的webhook做自动部署 vue、react、java、springBoot
    vue可复用性 & 组合
    vite使用短链接
    Ubuntu12.04(X86_64)上安装Mesa8.0.4
    回调函数
    c#隐式转换
    OpenGL ES2 的OffScreen实现
    Catch exception from other thread
    C# []、List、Array、ArrayList 区别及应用
    redhat update
  • 原文地址:https://www.cnblogs.com/diyudewudao/p/11408995.html
Copyright © 2020-2023  润新知