ABS · 2022年8月20日 0

Shell语法的结构

Shell语法可以分为基础,进阶,命令,高级话题这样4部分.
1 基础包括: 特殊字符,变量替换和赋值,参数;变量引用和转义;退出和推出状态;比较测试;操作相关话题.


2 进阶包括:内部变量和变量声明;操作字符串和参数替代;循环和分支;命令替代;算数扩展.

变量的另一种视角(第9章): 内部变量包括了builtin变量, 位置参数,其它特殊参数;变量可以设定类型,$RANDOM是可以产生随机数的函数.

变量操作(第10章):变量的两种最典型的使用场景是包含字符串和作为参数,expr类型的变量操作和参数替换是常见的两种模式, 主要的操作有字符串长度,匹配子字符串(长度,位置,提取,移除,替换).

算数扩展(第13章):算数扩展提供了在脚本中计算整数算术运算的工具.其具体方法有:
使用backticks: expr expression
使用双引号 “expression”
使用let “let expression” 或者 let expression
使用双括号 ((expression)) 或者 $((expression))


3 命令包括:撰写高效Shell脚本不可或缺的Limux命令.


4 高级话题包括:正则表达式;Here文档;I/O重定向;子shell;受限shell;进程替代;函数;别名;命令序列构造;数组;间接引用;/dev和/proc设备;网络编程;零值和空值;调试;选项;shell脚本风格等.

  • 内置命令(15章)分为:IO/文件系统/变量(定义,初始化,赋值,)/脚本行为(.,退出,替换等)/命令(true,false,type,hash,type,help),以及作业控制.
  • 外部文件程序命令(16章)分为:基本命令/复杂命令/时间日期和计时/文件文本处理,文件压缩-归档-属性-比较-编码加密/通讯(信息统计和远程主机控制-本地网络配置/终端控制/数学/杂项命令
  • 系统和管理命令(17章)分为:用户/终端/信息与统计/系统日志/作业控制/流程控制与启动项/网络/文件系统/备份.


Advanced Bash-Scripting Guide 这本书按照这样的四部分把上面的话题分成了30+章节,每个章节都包括了一些练习的实践脚本总共脚本示例近400个.

正如在之前我努力分辨的那样,Shell语法是一套独立但是又与其他相关连的体系,其他包括了Linux系统操作,网络操作,文件文本内容操作等. Shell就像一根牵引线,把它们串联在一起,彼此互相作用又相互独立. 对于使用者而言,分清这些有助于让自己避免陷入到”不识庐山真面目”的迷茫之中, 至少对于我很有用.