从基础到应用,细致讲解shell脚本的基本语法和编程技巧: 1.系统梳理shell特有语法 2.详细讲解实用脚本代码示例 3.深揭示测试和调试shell脚本的秘诀 4.基于Linux/bash讲解,同时适用于CentOS和Ubuntu 5.本书示例代码、shell脚本文件均可下载 如果你具备Linux基本操作技能,想要学习shell脚本编程但不知该如何下手 如果你刚始学习shell脚本,在写代码时屡屡踩坑,又检查不出语法错误
售 价:¥
纸质售价:¥89.90购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
版权声明
前言
关于示例代码
说明
Chapter 01 关于 shell
1.1 什么是 shell
启动 shell
1.2 为什么使用 shell
shell 和 Linux 内核的分离
1.3 执行命令的示例——ls 命令
深入了解命令执行过程
Chapter 02 关于 shell 脚本
2.2 为什么要使用 shell 脚本
任务自动化的优点
shell 脚本的应用场景
shell 脚本的缺点
2.3 编程语言与 shell
Chapter 03 shell 脚本的基础知识
3.1 shell 脚本的基本结构
文件名和扩展名
文件结构
shell 脚本和换行
3.2 注释
注释掉命令
3.3 shell 脚本的执行方法
Chapter 04 变量
4.1 什么是变量
声明变量
引用变量
4.2 环境变量
什么是环境变量
设置环境变量——export 命令
4.3 特殊的 shell 变量
HOME
PWD
SHELL
BASH
BASH_VERSION
LINENO
LANG
PATH
IFS
4.4 位置参数
4.5 特殊参数
位置参数的个数——$#
命令退出时的状态码——$?
进程 ID——$$ 和 $!
4.6 使用 declare 声明变量
只读变量
整型变量
4.7 数组
访问数组元素
使用索引进行赋值
删除数组元素
访问所有元素
添加元素
获取元素的索引列表
4.8 关联数组
访问数组元素
为元素赋值
删除数组元素
访问所有元素
获取关联数组中键的列表
Chapter 05 展开和引用
5.1 路径展开
匹配任意字符——* 和 ?
匹配任意一个字符——[]、[!] 和 [^]
组合使用路径展开
使用路径展开时的注意事项
5.2 大括号展开
{字符串 1,字符串 2,字符串 3}
{ 开始值 .. 结束值 }
5.3 波浪线展开
5.4 参数展开
使用 :- 进行展开
使用 := 进行展开
使用 :? 进行展开
使用 :+ 进行展开
字符串截取
获取字符串长度
使用匹配模式进行截取
先替换再展开
5.5 命令替换
5.6 算术表达式求值
使用 (()) 的退出状态码
5.7 算术表达式展开
5.8 进程替换
5.9 历史记录展开
5.10 引用
使用 \ 进行引用
使用引号 ' 和 " 进行引用
Chapter 06 控制结构
6.1 if
if 语句的条件
test 命令——[
字符串比较
整数比较
文件属性判断
组合运算符
if 语句的注意事项
条件部分使用空格分隔
在条件部分的最后使用 ;(分号)分隔
特殊符号的引用
处理部分不能为空
6.2 && 和 ||
和 test 命令组合使用
6.3 [[ ]]
单词拆分
模式匹配
6.4 for
break 和 continue
6.5 case
6.6 while 和 until
Chapter 07 重定向和管道
7.1 标准输入和标准输出
7.2 重定向
输出的重定向
输入的重定向
noclobber 和输出的重定向
重定向和追加写入
统一标准输出和标准错误输出
/dev/null
重定向的注意事项
在不能使用空格的地方使用了空格
重定向目标文件和重定向源文件
关于重定向操作符的总结
7.3 here document
here string
7.4 管道
7.5 命令分组
Chapter 08 函数
8.1 定义函数
8.2 变量的作用域
在函数中调用其他函数的场景
8.3 函数和位置参数
8.4 函数的退出状态码
Chapter 09 内置命令
9.1 : 命令
9.2 echo 命令
9.3 printf 命令
9.4 pwd 命令和 cd 命令
pwd 命令
cd 命令
9.5 command 命令和 builtin 命令
9.6 type 命令
9.7 shift 命令
9.8 set 命令
9.9 unset 命令
9.10 read 命令
使用 read 命令时的注意事项
9.11 trap 命令
9.12 wait 命令
9.13 exec 命令
修改重定向的目标位置
9.14 eval 命令
Chapter 10 正则表达式和字符串操作
10.1 什么是正则表达式
10.2 基本正则表达式和扩展正则表达式
用于匹配字符的元字符
用于进行位置匹配的元字符
用于进行重复匹配的元字符
其他元字符
10.3 详解 grep 命令
与匹配模式相关的选项
-i 选项
-e 选项
-v 选项
与输出格式相关的选项
-n 选项
-H 选项和 -h 选项
-L 选项和 -l 选项
-o 选项
-q 选项
10.4 sed 命令
如何查找 /(分隔号)字符
sed 命令的选项
Chapter 11 shell 脚本的执行方法
11.1 如何执行 shell 脚本
另一种执行方式
11.2 shebang 的作用
11.3 命令搜索路径
添加命令搜索路径
11.4 shell 脚本的权限
11.5 source 命令
Chapter 12 通过示例学习 shell 脚本
12.1 示例 1:计算数值合计值
运行示例
脚本的文件名
处理所有参数
将错误信息重定向到标准输出
发生错误时的退出状态码
执行加法计算
输出合计值
12.2 示例 2:计算数值列表的合计值
运行示例
示例的实际应用
12.3 示例 3:输出指定用户的信息
运行示例
取出参数中指定用户所在行的内容
读取并输出各种信息
当用户不存在时的处理
处理包含特殊符号的字符串
12.4 示例 4:对正则表达式中的元字符进行转义
运行示例
什么是回溯引用
对扩展正则表达式中的元字符进行转义
12.5 示例 5:根据文件格式解压缩
运行示例
对输入参数执行错误处理
获取文件名
处理不同的文件类型
处理未知类型的文件扩展名
没有指定运行参数时的处理
用于保存退出状态码的变量
执行解压缩处理
12.6 示例 6:创建指定路径的文件以及中间目录
运行示例
获取目录部分
创建目录
创建文件
12.7 示例 7:将相对路径转换为绝对路径
运行示例
添加 /(分隔号)
=~ 运算符和变量 BASH_REMATCH
确认目录是否存在
路径转换
根目录的处理
12.8 示例 8:在多个文件中查找字符串
运行示例
检查第 1 个参数
检查第 2 个参数
检查指定目录
find 命令和 xargs 命令
避免作为命令选项来处理
/dev/null 的作用
使用空字符分隔
12.9 示例 9:使用 getopt 解析命令行选项
运行示例
getopt 命令
解析命令行选项
将解析后的参数赋值给变量
grep 命令选项
执行查找
12.10 示例 10:使用 getopts 解析命令行选项
运行示例
getopts 命令
区分使用 getopt 和 getopts
12.11 示例 11:在命令行中管理回收站
运行示例
Linux 中回收站的工作原理
根据第 1 个参数执行指定的处理
解析命令行选项
指定回收站路径
trash_put 函数
trash_list 函数
print_trashinfo 函数
trash_restore 函数
改进意见
Chapter 13 shell 脚本的应用场景
13.1 将 shell 脚本用作命令
13.2 cron 批处理
13.3 命令补全
简单的补全文件
使用已输入字符串筛选补全候选
findgrep_getopt.sh 的补全文件——基本结构
补全命令行选项参数
13.4 为 trash.sh 编写补全文件
restore 之外的处理
restore 的处理
13.5 读取补全文件
13.6 bash-completion 软件包
Chapter 14 shell 脚本的测试和调试
14.1 静态代码解析
noexec 选项
ShellCheck
shellcheck 命令
14.2 使用 Bats 进行测试
安装 Bats
编写 Bats 的测试代码
使用 Bats 测试 shell 脚本
14.3 调试
verbose 选项
xtrace 选项
nounset 选项
errexit 选项
部分开启选项
14.4 shell 脚本中的常见错误
变量未定义
变量赋值
if 语句
单词拆分
路径展开
子 shell
Chapter 15 如何编写易用的 shell 脚本
15.1 什么是易于使用的 shell 脚本
命令行选项
错误信息
15.2 什么是易于阅读的 shell 脚本
如何编写注释
变量名和函数名
缩进样式
功能分割
shell 脚本不是万能的
参考文献
看完了
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜