Shell基础概念|青训营笔记

82 阅读2分钟

一、课程内容

  1. Shell基础概念
  2. 命令和语法
  3. 执行过程和原理
  4. 调试和前端集成

二、Shell基础概念

  1. Shell基础概念
  • 终端:获取用户输入、展示运算结果的硬件设备;
  • tty:和终端等价,在Linux中是输入、输出环境;
  • 终端模拟器:关联虚拟tty的输入输出软件;
  • Shell:处理来自终端模拟器的输入、解释执行之后输出结果给终端——Bash是Shell的一种具体实现;
  1. Shell的构成
  • 解释器:bash内置命令、GNU核心工具集、第三方库;
  • 编程语言:变量、运算、语句、函数;

三、命令和语法

变量
  1. 变量有三种类型
  • 自定义变量——作用域是当前Shell、声明方式是“=”、有字符串、整型、浮点型、日期型;

image.png

  • 环境变量——作用域是当前Shell及其子Shell、声明方式是“export、declare -x”;

image.png

运算符和引用如下表所示

image.png

管道
  • 管道与管道符|,作用是将前一个命令的结果传递给后面的命令——语法“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类似,0代表函数名,后续参数通过0代表函数名,后续参数通过1$2获取;
    • 函数内return仅仅表示函数的执行状态,不代表函数执行结果;
    • 返回结果一般用“echo”“print”,在外边使用$0获取结果;
    • 函数如果没有return,函数状态是上一条命令执行状态;
  • 模块化——原理是在当前Shell内执行函数文件;
常用命令

image.png

四、执行过程和原理

  • Shell脚本一般以.sh结尾,也可以没有,第一行需要指定用什么命令解释器来执行;
  • 执行过程——字符解析、Shell展开、重定向、执行命令
  • 收集状态并返回;

五、调试和前端集成

调试
  • 普通log,使用echo、print
  • 使用set命令
  • vscode debug插件
前端集成

node通过exec、spawn调用Shell命令; Shell脚本调用node命令 接住zx等库进行JavaScript融合。