第一篇 变量和语句

导读

为什么用 zsh 写脚本

Zsh 脚本样例

为什么要使用 shell 脚本语言

格式约定

变量

语句

总结


第二篇 字符串处理之常用操作

导读

字符串长度

字符串拼接

字符串切片

字符串截断

字符串查找

遍历字符

字符串替换

判断字符串变量是否存在

字符串匹配判断

大小写转换

目录文件名截取

相对路径转绝对路径

字符串分隔

多行字符串

读取文件内容到字符串

读取进程输出到字符串

参考


第三篇 字符串处理之转义字符和格式化输出

导读

转义字符

单引号

双引号

反引号

printf 命令用法

输出带颜色和特殊样式的字符串

参考


第四篇 字符串处理之通配符

导读

通配符的基本用法

加强版通配符

总结

参考


第五篇 数组

导读

数组定义

元素读写

数组拼接

数组遍历

数组切片

元素查找

元素排序

去除重复元素

使用连续字符或者数值构造数组

从字符串构造数组

从文件构造数组

从文件列表构造数组

数组交集差集

数组交叉合并

对数组中的字符串进行统一的处理

总结

参考

更新历史


第六篇 哈希表

导读

哈希表定义

元素读写

哈希表拼接

哈希表遍历

元素查找

元素排序

从字符串、文件构造哈希表

对哈希表中的每个元素统一处理

多维哈希表

总结


第七篇 数值计算

导读

整数和浮点数类型

运算符

数学函数

参考


第八篇 变量修饰语

导读

变量修饰语的格式

变量默认值

数组拼接成字符串

字符串切分成数组

输出变量类型

字符串、数组或哈希表嵌套取值

字符串内容作为变量名再取值

对齐或截断数组中的字符串

总结

参考


第九篇 函数和脚本

导读

函数定义

参数处理

函数嵌套

返回值

局部变量

脚本

exit 命令

用 getopts 命令处理命令行选项

总结

参考

更新历史


第十篇 文件查找和批量处理

导读

简单例子

按文件属性查找

通配符修饰语列表

更复杂的用法

文件批量重命名

不展开通配符

总结

参考

更新历史


第十一篇 变量的进阶内容

导读

typeset 命令

强制字符串内容为小写或者大写

设置变量为环境变量

设置变量为只读变量

设置数组不包含重复元素

设置整数的位数

进制转换

同时对多个变量赋相同的值

绑定字符串和数组

显示变量的定义方式

什么地方该加双引号

总结

参考

更新历史


第十二篇 [[ ]] 的用法

导读

比较字符串

判断文件

比较文件

比较数值

组合使用

[ ] 符号

总结

参考


第十三篇 管道和重定向

导读

管道

关于管道的更多细节

重定向

更多重定向的用法

命名管道

exec 命令的用法

总结

参考

更新历史


第十四篇 文件读写

导读

写文件

读文件

总结


第十五篇 进程与作业控制

导读

在子进程中执行代码

在后台运行进程

在脚本中使用后台进程执行代码

信号

总结


第十六篇 alias 和 eval 的用法

导读

alias

eval

总结


第十七篇 使用 socket 文件和 TCP 实现进程间通信

导读

Socket 文件

TCP

程序样例

总结


第十八篇 更多内置模块的用法

导读

模块的使用方法

日期时间相关模块

读写 gdbm 数据库

调度命令

底层的文件读写命令

其他模块

自己编写模块

总结


第十九篇 脚本实例讲解

导读

实例一:复制一个目录的目录结构

实例二:寻找不配对的文件

实例三:用 sed 批量重命名文件

实例四:根据文件的 md5 删除重复文件

实例五:转换 100 以内的汉字数字为阿拉伯数字

实例六:为带中文汉字数字的文件名重命名成以对应数字开头

实例七:统一压缩解压工具

实例八:方便并发运行命令的工具

实例九:批量转换图片格式

总结

更新历史


第二十篇 代码风格

导读

缩进

每行代码最多字符数

折行

空格

空行

括号

常量

变量

引号

函数

脚本行数

语句风格

总结


第二十一篇 测试方法以及编写可测试代码的方法

导读

单元测试

单个脚本的功能测试

功能测试示例

集成测试

系统测试

总结


第二十二篇 Bash 和 zsh 用法简明对照表

导读

Bash 和 zsh 用法简明对照表

总结