第一篇 变量和语句 导读 为什么用 zsh 写脚本 Zsh 脚本样例 为什么要使用 shell 脚本语言 格式约定 变量 变量定义 变量比较 语句 条件语句 循环语句 分支语句 用户输入选择语句 异常处理语句 简化的条件语句 总结 第二篇 字符串处理之常用操作 导读 字符串长度 字符串拼接 字符串切片 字符串截断 字符串查找 遍历字符 字符串替换 判断字符串变量是否存在 字符串匹配判断 大小写转换 目录文件名截取 相对路径转绝对路径 字符串分隔 多行字符串 读取文件内容到字符串 读取进程输出到字符串 参考 第三篇 字符串处理之转义字符和格式化输出 导读 转义字符 单引号 双引号 反引号 print 命令用法 print 命令选项功能介绍 printf 命令用法 输出带颜色和特殊样式的字符串 print 选项列表 参考 第四篇 字符串处理之通配符 导读 通配符的基本用法 加强版通配符 总结 参考 第五篇 数组 导读 数组定义 元素读写 数组拼接 数组遍历 数组切片 元素查找 元素排序 去除重复元素 使用连续字符或者数值构造数组 从字符串构造数组 从文件构造数组 从文件列表构造数组 数组交集差集 数组交叉合并 对数组中的字符串进行统一的处理 总结 参考 更新历史 第六篇 哈希表 导读 哈希表定义 元素读写 哈希表拼接 哈希表遍历 元素查找 元素排序 从字符串、文件构造哈希表 对哈希表中的每个元素统一处理 多维哈希表 用一维哈希表模拟多维哈希表 用字符串分割访问来模拟多维哈希表 总结 第七篇 数值计算 导读 整数和浮点数类型 运算符 数学函数 参考 第八篇 变量修饰语 导读 变量修饰语的格式 变量默认值 数组拼接成字符串 字符串切分成数组 输出变量类型 字符串、数组或哈希表嵌套取值 字符串内容作为变量名再取值 对齐或截断数组中的字符串 总结 参考 第九篇 函数和脚本 导读 函数定义 参数处理 函数嵌套 返回值 局部变量 脚本 exit 命令 用 getopts 命令处理命令行选项 总结 参考 更新历史 第十篇 文件查找和批量处理 导读 简单例子 按文件属性查找 通配符修饰语列表 更复杂的用法 按文件时间查找文件 按文件大小查找文件 文件排序 组合使用 文件批量重命名 不展开通配符 总结 参考 更新历史 第十一篇 变量的进阶内容 导读 typeset 命令 强制字符串内容为小写或者大写 设置变量为环境变量 设置变量为只读变量 设置数组不包含重复元素 设置整数的位数 进制转换 同时对多个变量赋相同的值 绑定字符串和数组 显示变量的定义方式 什么地方该加双引号 总结 参考 更新历史 第十二篇 [[ ]] 的用法 导读 比较字符串 判断文件 比较文件 比较数值 组合使用 [ ] 符号 总结 参考 第十三篇 管道和重定向 导读 管道 关于管道的更多细节 重定向 更多重定向的用法 命名管道 exec 命令的用法 总结 参考 更新历史 第十四篇 文件读写 导读 写文件 创建文件 清空文件 删除文件 多行文本写入 用 mapfile 读写文件 从文件中间位置写入 读文件 读取整个文件 按行遍历文件 读取指定行 读取文件到数组 读取指定数量的字符 向文件中间插入内容 总结 第十五篇 进程与作业控制 导读 在子进程中执行代码 在后台运行进程 在脚本中使用后台进程执行代码 信号 总结 第十六篇 alias 和 eval 的用法 导读 alias eval 总结 第十七篇 使用 socket 文件和 TCP 实现进程间通信 导读 Socket 文件 TCP 程序样例 总结 第十八篇 更多内置模块的用法 导读 模块的使用方法 日期时间相关模块 读写 gdbm 数据库 调度命令 底层的文件读写命令 其他模块 自己编写模块 总结 第十九篇 脚本实例讲解 导读 实例一:复制一个目录的目录结构 实例二:寻找不配对的文件 实例三:用 sed 批量重命名文件 实例四:根据文件的 md5 删除重复文件 实例五:转换 100 以内的汉字数字为阿拉伯数字 实例六:为带中文汉字数字的文件名重命名成以对应数字开头 实例七:统一压缩解压工具 实例八:方便并发运行命令的工具 实例九:批量转换图片格式 总结 更新历史 第二十篇 代码风格 导读 缩进 每行代码最多字符数 折行 空格 空行 括号 常量 变量 引号 函数 脚本行数 语句风格 总结 第二十一篇 测试方法以及编写可测试代码的方法 导读 单元测试 单个脚本的功能测试 功能测试示例 集成测试 系统测试 总结 第二十二篇 Bash 和 zsh 用法简明对照表 导读 Bash 和 zsh 用法简明对照表 总结