[ Shell脚本和编程 | 青训营笔记]

47 阅读2分钟

Shell 脚本和编程

学习shell的价值

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

01_Shell基本概念

Shell是命令行解释器,处理来自终端模拟的输入,解释执行之后输出结果的终端。

image.png

shell的发展

image.png

shell的构成

image.png

02_shell的语法与命令

  • 自定义变量
  • 环境变量
  • 系统环境变量

变量

image.png

自定义变量的使用

image.png

系统环境变量

image.png

配置文件加载

分登陆式和非登陆式,下图为其两种加载的过程: image.png

在修改某个配置文件后要其在当前shell生效要使用source

image.png

运算符和引用

image.png

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

image.png

shell的重定向

image.png

image.png

image.png

shell的判断命令

image.png

注意:
中括号前后要有空格
[和test是命令,只能使用自己支持的标志位,<、>、=只能用来比较字符串
中括号内的变量,最好都是用引号括起来
[[更丰富,在整型比较中支持<、>、=,在字符串比较中支持=~正侧

image.png

shell的分支语句

image.png

shell的循环语句

image.png

image.png

image.png

image.png

shell的函数

image.png

image.png

注意:

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

image.png

shell模块化
模块化的原理是在当前shell内执行函数文件,方式: source[函数库的路径]

image.png

常用命令

image.png

03_执行过程和原理

执行

image.png

执行过程

image.png

shell展开

  1. 大括号展开
  2. 波浪号展开
  3. 参数展开
  4. 命令替换
  5. 数值计算
  6. 文件名展开

image.png

image.png

image.png

image.png

image.png

image.png

04_调试和前端集成

调试

  • 普通log、使用echo、printf
  • 使用set命令
  • vscode debug插件

image.png

image.png

image.png

前端集成

image.png

image.png

image.png

image.png

课程总结

image.png