shell_Day08
数组与字符串:
数组
数组就是一段连续的变量,一段连续的内存存储空间
为了解决变量过多的问题; 在同一类变量中,我们不需要去定义多个名字,而是以数组的方式来定义;(列表)
数组名[索引]=值
定义数组
declare -i 定义整数 (申明)
declare -a 定义数组array
declare -A 定义嵌套的数组
索引并不一定是数字
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
%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 , 才会替换
查找并删除
替换中,不指定替换字符串,即为删除
${变量名/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 名字.XXXXXX (XX代表随机数(字母和数字))
默认创建是随机的文件
-d 创建的就是随机的 目录
优点可以指定权限来复制文件
用法: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的更多相关文章
随机推荐
- 破解练习-CRACKME001
001-注册算法分析 一.工具和调试环境 动态调试工具:x64dbg 系统环境:win10 1909 二.分析Serial/name的算法 由于Serial里面就是一个字符串比较,没有啥算法,这里就不 ...
- 一款备受欢迎的用户脚本管理器插件TampermonKey-油猴脚本管理器安装与使用
Tampermonkey简介 Tampermonkey是一款备受欢迎的浏览器扩展和用户脚本管理器,它适用于目前各种主流浏览器. 方便的脚本管理(正在运行的脚本和可以运行的脚本在图标处显示一览无余) 脚 ...
- Vue视频 | 【Vue2 + Vue3 前端教程】完整版
目前大部分公司还是以vue.react技术为主的,而Vue中还是以Vue2为主流,但不可否认Vue3是未来所必须的且已有这个趋向了 今天给大家介绍一个Vue的教程 里面既有现在主流的Vue2 同时也存 ...
- .Net Core后端架构实战【1-项目分层框架设计】
摘要:基于.NET Core 7.0WebApi后端架构实战[1-项目结构分层设计] 2023/02/05, ASP.NET Core 7.0, VS2022 引言 从实习到现在回想自己已经入行四年 ...
- TF坐标
1.简介 TF是一个让用户随时间跟踪多个坐标系的功能包,它使用树形数据结构,根据时间缓冲并维护多个坐标系之间的坐标变换关系. 2.TF工具 tf_monitor :查看TF树中所有坐标系的发布状态 t ...
- ES6的Set详解
数组去重 let arr = [ 1,2,3,4,5,3,2 ] // 数组去重 // 方法一 let newArr = [new Set(arr)] console.log(newArr); // ...
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(7)-Charles苹果手机手机抓包知否知否?
1.简介 Charles和Fiddler一样不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Charles也能截获iOS设备发出的请求,比如 i ...
- Winform程序制作安装包
记录一下Winform程序打包过程 参考文章:VS2017 WinFrom打包设置与教程 下载 Visual Studio Installer 拓展插件 从VS2017开始VS已默认不再集成Insta ...
- 「CEOI2019」魔法树
\(\text{Solution}\) 设 \(f_{x,i}\) 表示以 \(x\) 为根的子树 \(i\) 天后的最大收益 那么 \(f_{x,i} = \max(f_{x,i-1},w_x [d ...
- POJ1737 连通图
一句话题意:求一个 \(n\) 点带编号的连通图数量. 吐槽一下:好好一道计数 dp 为什么不加取余????逼着选手写高精度的出题人应该拎出去烧--哦楼天城是出题人是吧哦当我没说我什么都没说我现在就把 ...