shell脚本和编程 | 青训营笔记

76 阅读2分钟

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

shell基础概念

概念

终端:获取用户输入,展示运算结果的硬件设备

shell构成

image.png

命令和语法

自定义变量

image (2).png image (1).png

系统环境变量

image (3).png

配置文件加载

image (5).png

管道

管道与管道符|,作用是将前一个命令的结果传递给后面的命令 语法:cmd1 | cmd2
要求:管道符右侧的命令必须能接受标准输入才行

重定向

image (4).png

判断命令

  • 整数测试

  • 字符串测试

  • 文件测试
    语法

  • test condition

  • [condition]

  • [[condition]]
    注意

  • 中括号前后要有空格符;

  • [和test是命令,只能使用自己支持的标志位,<、>、=只能用来比较字符串

  • 中括号内的变量,最好都是用引号括起来

  • [[更丰富,在整型比较中支持<、>、=,在字符串中支持=~正则

执行过程和原理

执行

1.shell脚本一般以.sh结尾,也可以没有,这是一个约定;第一行需要指定用什么命令解释器来执行
2.启动方式

执行过程

1.字符解析

  • 识别换行符、分号做行的分割
  • 识别命令连接符(||&&管道)做命令的分割
  • 识别空格、tab符,做命令和参数的分割

2.shell展开,例如{1..3}解析为1 2 3
3.重定向,将stdio,stdout,stderr的文件描述进行指向变更
4.执行命令

  • builtin直接执行
  • 非builtin使用$PATH查找,然后启动子进程执行

5.收集状态并返回

调试和前端集成

调式

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

前端集成

  1. node中通过exec、spawn调用shell命令
  2. shell脚本中调用node命令
  3. 借助zx等库进行javascript、shell script的融合

课程总结

image (6).png