图片引用链接:https://www.bilibili.com/video/BV16Z4y1N7R1?p=2&spm_id_from=pageDriver
文件测试:、…
逻辑比较、算数运算: 、
1. 常用 Shell 类型
2. 注释
3. 变量
3.1 系统环境变量
通过加载 Shell 配置文件(全局)中变量数据,共享给 Shell 所有 Shell 程序使用。
3.2 用户环境变量
Shell 环境加载个人配置文件中定义的变量。
3.3 查看环境变量
3.4 常用环境变量
3.5 自定义变量
+/- :"-" 可用来指定变量的属性,"+" 取消变量所设的属性。
a:array,设置为普通索引的数组。
A:array,设置为关联数组(map)。
r:readonly,将变量设置为只读。
x:export,设置变量为环境变量。
i:int,设置为整型变量。
f:function,设置为一个函数变量。
- 变量名由字母、数字和下划线组成,数字不能开头。
- 等号两侧不能有空格。
- 在 bash 环境中,变量的默认类型都是字符型,不能直接参与数值运算。
- 变量的值如果有空格,必须使用双引号。
- 不能使用关键词作为变量名称。
3.6 查询变量
3.7 变量删除
3.8 定义只读常量
3.9 全局变量
仅限于父子shell。
在当前 shell 和子 shell 环境中都可以使用。
3.10 特殊变量
4. Shell 配置文件
全局配置文件
个人配置文件
4.1 创建环境变量
4.2 shell 登录环境和非登录环境加载文件流程
需要登录执行的 shell 脚本环境变量配置在 /etc/profile、/当前用户/.bash_profile
不需要登录执行的 shell 脚本环境变量配置在:/当前用户/.bashrc、/etc/bashrc
4.3 使用 Shell 登录环境/非登录环境执行脚本
5. 字符串
5.1 字符串的三种格式
字符串表示使用双引号
5.2 获取字符串长度
5.3 拼接字符串
5.4 截取字符串
6 数组
6.1 数组的定义与遍历
索引数组
key-value 关联数组
5.2 数组的拼接
5.3 数组的删除
6. 内部/外部命令
内置命令会比外部命令执行的更快。
执行外部命令会调动磁盘 I/O,还需要 fork 出一个单独的进程来执行。
执行内置命令相当于调用当前 shell 进程的一个函数,还是在当前 shell 环境内,减少了上下文切换。
7. alias
8. echo
9. read
10. expr
整数运算、字符串处理
10.1 expr 整数运算
可以直接输出
引用变量使用 $,特殊字符需要转义,只能计算一个表达式
10.2 expr 字符串处理
11. 整数比较
注意空格,
双括号内格式随意,有 情况, 表示赋值,建议使用本方法,小数不能比较。
12. 整数/浮点数/字符串比较
没有 情况,需要转义,可以
- /
- /
没有 情况,不需要转义,可以
- /
- /
字符串比较的特殊方法:
- 检查字符串长度是否为 0。
- 检查字符串长度是否不为 0。
- 字符串不空返回 true。
13. [[ ]] 和 [ ] 区别
- 会将字符串拆开单个比较, 不会。
- ,
14. 文件测试
15. 布尔运算
16. 逻辑运算
17. 算数运算 (( )) / $[ ]
直接输出,里面直接使用变量名,特殊字符不需要转义,多个表达式赋值
需要获取值之后才能输出
赋值简单,特殊字符不需要转义
不能直接输出
特殊字符不需要转义
不能多表达式计算
18. bc 命令
内置变量
内置数字函数
19. case
case 只支持一部分正则表达式,且不需要每个 case 选项都有一个 break,和 C 不一样。
20. 循环
21. select
死循环,需要配合 break 使用。
22. 函数
系统函数:basename、dirname
自定义函数
shell 程序命令:运行命令时开启一个子进程运行命令。
函数:在当前 shell 环境中运行,没有开启进程。
cut - 列 文本处理工具
可以切割指定列字符字节的数据
sed - 行 文本处理工具
stream editor,流编辑器,可对文本文件的每一行数据匹配查询之后进行增、删、改、查等操作。支持按行、字段、正则匹配文本。
读取文件中每行数据到缓存区,匹配后执行 sed 命令,将执行后的结果输出。
awk - 文本分析工具
默认分隔符为空格,