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

72 阅读2分钟

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

shell基础概念

构成

image.png

命令和语法

变量

image.png

image.png

自定义变量

image.png

image.png

系统环境变量

image.png

配置文件加载

image.png

执行脚本

source ~/.bashrc

运算符和引用

image.png

管道

管道与管道符|,作用是将前一个命令的结果传递给后一个命令

语法: cmd1|cmd2

要求:管道右侧的命令必须能接受标准输入才行,如grep命令,ls、mv等不能直接使用,可以使用xargs预处理

image.png

ps:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遭到管道错误退出

重定向

image.png image.png image.png

判断命令

image.png

image.png ps:-eq、-lt、-gt表示等于、小于、大于

-z、-n表示字符串为空、非空;12行判断是否相等

-e判断是否存在,-f判断是否存在并且是一个头文件

image.png

第三点的示例 image.png

分支语句

image.png

image.png

image.png

image.png

循环

image.png while条件成立继续循环,until条件成立跳出循环

for的两种写法

image.png

ps:第一种,三个值分别赋给foo进行操作。

函数

image.png

调用不用小括号 参数直接写,用空格隔开

image.png

image.png

image.png

ps:local限定作用域,避免污染;unset只用完撤销变量

模块化

image.png

image.png

常用命令

image.png

执行过程和原理

执行

image.png image.png

执行过程 image.png

shell展开

image.png

image.png

image.png

image.png

image.png image.png image.png

调试和前端集成

调试

  • 普通log,使用echo、print

image.png

  • 使用set命令

image.png

  • vscode debug插件

image.png

集成

image.png

总结

一、shell基础和语法

  1. shell 脚本以 # 开头的行是注释。
  2. shell 变量前面不需要定义类型,直接使用,VARIABLES="value"。
  3. shell 字符串可以使用双引号或单引号,双引号会对变量和命令进行替换,单引号不会。
  4. shell 支持多种条件判断和循环语句,如if else、for loop、while loop等。
  5. shell 函数定义使用function关键字,函数返回值通过exit状态码实现。

二、shell 执行过程和原理

  1. 用户输入命令,shell 解析器读取命令并执行。
  2. 命令可以是shell 内置命令,也可以是系统命令。如果是后者,shell 会 fork 一个子进程执行系统命令。
  3. shell 会根据命令查找对应的执行程序,读取其代码并执行。这些执行程序通常位于/bin /usr/bin等路径下。
  4. shell 会替换路径、变量、通配符等,最终形成可执行的命令。
  5. shell 会在执行命令前会设置一些环境变量,这些变量会影响命令的执行。

三、shell 调试和前端集成 1.普通log,使用echo、print 2.使用set命令。 3.vscode debug插件 4.在前端可以使用exec命令来执行shell 脚本,或使用fetch API提交表单,将shell 脚本作为后端处理。