shell编程 | 青训营

35 阅读2分钟

Linux服务器 node.js服务的进程管理,问题排查,资源监控 编写tce,scm(web和node打包),docker脚本

image.png bash和shell类似于类和实例的关系,bash是实例,shell是类。

image.pngshell既是一个解释器也是一个编程语言。 shell的语法和命令

image.png

image.png 常用的自定义变量和环境变量 可以给变量赋值,可以给变量赋值命令,可以给变量赋值命令结果,如果进行计算要let声明。 image.png 系统环境变量常用命令:0,0,#,,*,?,PS1,PS1,HOME,$PSTH image.png 文件分为登录式和非登录式 image.png 管道:管道的作用 | 是将前一个命令的结果传递给后一个命令 ,管道右侧的命令必须能接受标准输入才行。比如grep命令,ls,mv等不能直接使用,keyishiyongxargs预处理,注意:管道命令仅仅处理stdout,对于stderr(出错的命令)会忽略掉,可以使用set -o pipefail设置shell遇到管道错误退出。

重定向

image.png 可以利用重定向改变shell的输出路线,<<输入重定向,到指定符号就停止输入

image.png 整数测试作用分别是:小于 等于 大于,字符串测试作用分别是:字符串为空,非空,字符串是否相等,文件测试:文件是否存在,是否存在且为普通文件 image.png

image.png例如:

image.png上图中$name没有加引号会被解析为上面赋值的字符串。

image.pngif语句 -o代表或,if语句要跟then来表示判断完成后干什么事。case语句中用esac结尾

image.png 循环都要跟do命令来指示达到判定条件后做什么

image.png注:参数用空格表示就行 函数里的return不表示执行结果,调用函数不会的到return的10。 image.png 用sourse引入模块

image.png 常用命令:grep,sort,wc,head,tail,cut,find, xargs,which。

image.png

shell执行过程和原理 image.png shell中是不以后缀名判断文件类型的,而是以文件中第一行的文件路径选择解释器 ,shell文件在bash中,启动方式中,前两种会在子进程中执行脚本,sourse会在本进程中执行脚本。

image.png 图中中间蓝色部分就是bash解释器,左边展示了一个输入来到之后经历的过程。

image.png

image.png

image.png

image.png 调试shell脚本和前端集成

image.png

1.echo和printf打印想要的结果 2.set -u/-x/-e/-o pipefail 会在shell最开始的时候用set调试 image.png 3.vscode image.png

前端集成 image.png exec和spawn的区别:exec会启动一个子shell解析传入的命令,并且将命令的结果存在缓冲区(缓冲区有大小限制200k),执行完毕之后将结果返回到函数中来,spawn不会启动子shell,但是会返回一个流对象,我们直接对流对象进行写入和读取操作,没有大小限制。

image.png