前端与 Shell脚本和编程 | 青训营笔记

46 阅读2分钟

image.png

学习Shell的价值

  • Linux服务器的基本操作和管理
  • 前端Node.js服务的进程管理、问题排查、资源监控等运维操作
  • 使用Shell编写TCE、SCM、Docker脚本,完成服务编译和部署

Shell基础概念

终端:获取用户输入、展示运算结果的硬件设备
tty:teletypeWriter的简称,和终端等价, 早期指电传打印机,在linux 中是输入/输出环境
终端模拟器:Mac Terminal、 iTerm2等, 关联虚拟tty的输入输出软件
Shell:command interpreter,处理来自终端模拟器的输入,解释执行之后输出结果给终端
Bash:shell的一种具体实现

发展

image.png

构成

image.png

语法和命令

变量

image.png

自定义变量

image.png

系统环境变量

image.png

配置文件加载

image.png

运算符和引用

image.png

管道

管道与管道符|,作用是将前一个命令的结果传递给后面的命令
语法: cmd1| cmd2
要求:管道右侧的命令 必须能接受标准输入行,比如grep命令,Is、 mv等不能直接使用,可以使用xargs预处理
注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出

image.png

重定向

image.png

判断命令

image.png

分支语句

image.png

循环

image.png

函数

语法一:
funcName(){echo "abc";}
语法二:
function funcName(){echo "abc";}

image.png
注意:

  • she11自上而下执行,函数必须在使用前定义
  • 函数获取变量和shell script类似,0代表函数名,后续参数通过0代表函数名,后续参数通过1、$2 ...获取
  • 函数内return仅仅表示函数执行状态,不代表函数执行结果
  • 返回结果一般使用echo、printf,在外面使用$()、`` 获取结果
  • 如果没有return ,函数状态是上一条命令的执行状态, 存储在$?中

模块化

image.png

常用命令

image.png

执行过程和原理

执行

image.png

执行过程

image.png

Shell展开

  1. 大括号展开(Brace Expansion) {...}
  2. 波浪号展开(Tilde Expansion) ~
  3. 参数展开(Shell Parameter Expansion)
  4. 命令替换(Command Substitution)
  5. 数学计算(Arithmetic Expansion) $((..))
  6. 文件名展开(Filename Expansion) * ? [..]外壳文件名模式匹配
大括号展开

image.png

波浪号展开

image.png

参数展开

image.png

命令替换

image.png

数学计算

image.png

文件名展开

image.png

调试和前端集成

调试

  1. 普通log,使用echo、printf
  2. 使用set命令
  3. vscode debug插件

VSCode配置

image.png

前端集成

image.png