shell脚本和编程 | 青训营笔记
shell基础概念
构成
命令和语法
变量
自定义变量
系统环境变量
配置文件加载
执行脚本
source ~/.bashrc
运算符和引用
管道
管道与管道符|,作用是将前一个命令的结果传递给后一个命令
语法: cmd1|cmd2
要求:管道右侧的命令必须能接受标准输入才行,如grep命令,ls、mv等不能直接使用,可以使用xargs预处理
ps:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遭到管道错误退出
重定向
判断命令
ps:-eq、-lt、-gt表示等于、小于、大于
-z、-n表示字符串为空、非空;12行判断是否相等
-e判断是否存在,-f判断是否存在并且是一个头文件
第三点的示例
分支语句
循环
while条件成立继续循环,until条件成立跳出循环
for的两种写法
ps:第一种,三个值分别赋给foo进行操作。
函数
调用不用小括号 参数直接写,用空格隔开
ps:local限定作用域,避免污染;unset只用完撤销变量
模块化
常用命令
执行过程和原理
执行
执行过程
shell展开
调试和前端集成
调试
- 普通log,使用echo、print
- 使用set命令
- vscode debug插件
集成
总结
一、shell基础和语法
- shell 脚本以 # 开头的行是注释。
- shell 变量前面不需要定义类型,直接使用,VARIABLES="value"。
- shell 字符串可以使用双引号或单引号,双引号会对变量和命令进行替换,单引号不会。
- shell 支持多种条件判断和循环语句,如if else、for loop、while loop等。
- shell 函数定义使用function关键字,函数返回值通过exit状态码实现。
二、shell 执行过程和原理
- 用户输入命令,shell 解析器读取命令并执行。
- 命令可以是shell 内置命令,也可以是系统命令。如果是后者,shell 会 fork 一个子进程执行系统命令。
- shell 会根据命令查找对应的执行程序,读取其代码并执行。这些执行程序通常位于/bin /usr/bin等路径下。
- shell 会替换路径、变量、通配符等,最终形成可执行的命令。
- shell 会在执行命令前会设置一些环境变量,这些变量会影响命令的执行。
三、shell 调试和前端集成 1.普通log,使用echo、print 2.使用set命令。 3.vscode debug插件 4.在前端可以使用exec命令来执行shell 脚本,或使用fetch API提交表单,将shell 脚本作为后端处理。