数组与字符串:

数组

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

定义数组

  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
 

 

shell_Day08的更多相关文章

随机推荐

  1. LeetCode_单周赛_332

    6354. 找出数组的串联值 题意 将数组首尾元素接在一起,就是串联值. 串联之后删除,如果只剩下一个元素,加上这个元素即可 双指针,从首和尾向中间移动即可 code 注意:用 long 没看题目用了 ...

  2. Lodop打印小票

    使用Lodop打印小票 1.html页面 <head> <meta http-equiv="Content-Type" content="text/ht ...

  3. 模型预处理层介绍(1) - Discretization

    预处理的作用主要在于将难以表达的string或者数组转换成模型容易训练的向量表示,其中转化过程大多是形成一张查询表用来查询. 常见的预处理方式包括: class Discretization: Buc ...

  4. Docker挂载

    1.挂载的概念 预备:你需要了解docker的基本知识 docker实现了容器部署,那当我们需要配置或者查看容器生成的日志文件怎么办? docker提供了挂载机制:挂载能够将容器内的目录/文件和外部的 ...

  5. 记一次使用tika解析文件文本导致的内存溢出问题

    背景 笔者曾供职于某信息安全公司,接到过一个需求,提取文档中的文本以供后续分析.tika是apache开源的解析文档内容的组件,应用十分广泛.tika几乎支持你能想到的所有文档格式,docx , pp ...

  6. 三星为其基于 RISC-V的 Tizen平台移植.NET

    最近.NET团队在这篇文章中介绍了对.NET移植的一般政策:https://devblogs.microsoft.com/dotnet/why-dotnet/#binary-distributions ...

  7. 【译】.NET 7 中的性能改进(五)

    原文 | Stephen Toub 翻译 | 郑子铭 循环提升和克隆 (Loop Hoisting and Cloning) 我们之前看到PGO是如何与循环提升和克隆互动的,这些优化也有其他改进. 从 ...

  8. 题解 P2602 [ZJOI2010] 数字计数

    虽然说是数位 dp 入门题但是还是不是很会(悲 看了题解才做出来,中途因为各种 SB 问题调了很长时间(悲 聪明的你一定能看出来这是数位 dp,因此令 \(i\) 为当前填的位数,\(limit\) ...

  9. 代码随想录算法训练营day16 | leetcode ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

    基础知识 二叉树的多种遍历方式,每种遍历方式各有其特点 LeetCode 104.二叉树的最大深度 分析1.0 往下遍历深度++,往上回溯深度-- class Solution { int deep ...

  10. 学习操作系统P3 多处理器编程:从入门到放弃 (线程库;现代处理器和宽松内存模型)

    啊 啊 啊 啊 操作系统会自动把线程放置在不同的处理器上 可以用top观察CPU使用率 啊 啊 啊 啊 a 甚至连一个简单的求和程序都做不对 a 汇编语言中的 lock: CPU的特性,通过总线加锁, ...