Chapter 01 关于shell 1
1.1什么是shell 2
1.2为什么使用shell 4
1.3执行命令的示例——ls命令 6
Chapter 02 关于shell脚本 9
2.1 什么是shell脚本 10
2.2 为什么要使用shell脚本 12
2.3 编程语言与shell 14
Chapter 03 shell脚本的基础知识 17
3.1 shell脚本的基本结构 18
3.2 注释 21
3.3 shell脚本的执行方法 23
Chapter 04 变量 27
4.1 什么是变量 28
4.2 环境变量 31
4.3 特殊的shell变量 35
4.4 位置参数 40
4.5 特殊参数 42
4.6 使用declare声明变量 45
4.7 数组 48
4.8 关联数组 54
Chapter 05 展开和引用 59
5.1 路径展开 60
5.2 大括号展开 64
5.3 波浪线展开 65
5.4 参数展开 66
5.5 命令替换 76
5.6 算术表达式求值 80
5.7 算术表达式展开 82
5.8 进程替换 83
5.9 历史记录展开 84
5.10 引用 86
Chapter 06 控制结构 91
6.1 if 92
6.2 &&和|| 102
6.3 [[ ]] 104
6.4 for 109
6.5 case 112
6.6 while和until 114
Chapter 07 重定向和管道 117
7.1 标准输入和标准输出 118
7.2 重定向 119
7.3 here document 130
7.4 管道 134
7.5 命令分组 136
Chapter 08 函数 141
8.1 定义函数 142
8.2 变量的作用域 144
8.3 函数和位置参数 149
8.4 函数的退出状态码 .....152
Chapter 09 内置命令 155
9.1 :命令 156
9.2 echo命令 156
9.3 printf命令 159
9.4 pwd命令和cd命令 161
9.5 command命令和builtin命令 163
9.6 type命令 165
9.7 shift命令 168
9.8 set命令 169
9.9 unset命令 173
9.10 read命令 175
9.11 trap命令 179
9.12 wait命令 183
9.13 exec命令 184
9.14 eval命令 187
Chapter 10 正则表达式和字符串操作 191
10.1 什么是正则表达式 192
10.2 基本正则表达式和扩展正则表达式 192
10.3 详解grep命令 196
10.4 sed命令 203
Chapter 11 shell脚本的执行方法 209
11.1 如何执行shell脚本 210
11.2 shebang的作用 211
11.3 命令搜索路径 212
11.4 shell脚本的权限 215
11.5 source命令 217
Chapter 12 通过示例学习shell脚本 221
12.1 示例1:计算数值合计值 222
12.2 示例2:计算数值列表的合计值 227
12.3 示例3:输出指定用户的信息 229
12.4 示例4:对正则表达式中的元字符进行转义 235
12.5 示例5:根据文件格式解压缩 238
12.6 示例6:创建指定路径的文件以及中间目录 244
12.7 示例7:将相对路径转换为绝对路径 248
12.8 示例8:在多个文件中查找字符串 253
12.9 示例9:使用getopt解析命令行选项 260
12.10 示例10:使用getopts解析命令行选项 271
12.11 示例11:在命令行中管理回收站 280
Chapter 13 shell脚本的应用场景 305
13.1 将shell脚本用作命令 306
13.2 cron批处理 308
13.3 命令补全 309
13.4 为trash.sh编写补全文件 321
13.5 读取补全文件 327
13.6 bash-completion软件包 329
Chapter 14 shell脚本的测试和调试 331
14.1 静态代码解析 332
14.2 使用Bats进行测试 337
14.3 调试 343
14.4 shell脚本中的常见错误 355
Chapter 15 如何编写易用的shell脚本 363
15.1 什么是易于使用的shell脚本 364
15.2 什么是易于阅读的shell脚本 365
参考文献 373