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