一、课程内容
- Shell基础概念
- 命令和语法
- 执行过程和原理
- 调试和前端集成
二、Shell基础概念
- Shell基础概念
- 终端:获取用户输入、展示运算结果的硬件设备;
- tty:和终端等价,在Linux中是输入、输出环境;
- 终端模拟器:关联虚拟tty的输入输出软件;
- Shell:处理来自终端模拟器的输入、解释执行之后输出结果给终端——Bash是Shell的一种具体实现;
- Shell的构成
- 解释器:bash内置命令、GNU核心工具集、第三方库;
- 编程语言:变量、运算、语句、函数;
三、命令和语法
变量
- 变量有三种类型
- 自定义变量——作用域是当前Shell、声明方式是“=”、有字符串、整型、浮点型、日期型;
- 环境变量——作用域是当前Shell及其子Shell、声明方式是“export、declare -x”;
运算符和引用如下表所示
管道
- 管道与管道符|,作用是将前一个命令的结果传递给后面的命令——语法“cmd1|cmd2”
- 重定向:输出重定向符号(>覆盖写入文件、>>追加写入文件、2>错误输出写入文件、&>正确和错误输出统一写入到文件中)、输入重定向符号(<、<<)
语法
- 判断命令——Shell提供了test、【、【【三种判断符号,可用于整数测试、字符串测试、文件测试
-
- 语法:test condition
-
- 语法:【condition】
-
- 语法:【【condition】】
- 分支语句语法如下:
-
- if condition;then……elif condition;then……else…… fi
-
- case $变量 in:……
- 循环:while循环、until循环、for循环;
- 函数:
-
- 语法:funcName(){echo“abc”,}
-
- 语法:function funcName(){echo“abc”}
-
- Shell自上而下执行,函数必须在使用前定义;
-
- 函数获取变量和shell script类似,1$2获取;
-
- 函数内return仅仅表示函数的执行状态,不代表函数执行结果;
-
- 返回结果一般用“echo”“print”,在外边使用$0获取结果;
-
- 函数如果没有return,函数状态是上一条命令执行状态;
- 模块化——原理是在当前Shell内执行函数文件;
常用命令
四、执行过程和原理
- Shell脚本一般以.sh结尾,也可以没有,第一行需要指定用什么命令解释器来执行;
- 执行过程——字符解析、Shell展开、重定向、执行命令
- 收集状态并返回;
五、调试和前端集成
调试
- 普通log,使用echo、print
- 使用set命令
- vscode debug插件
前端集成
node通过exec、spawn调用Shell命令; Shell脚本调用node命令 接住zx等库进行JavaScript融合。