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

97 阅读2分钟

Shell脚本和编程

1:基础概念 2:命令和语法 3:执行过程和原理 4:调试和前端集成

价值:

Linux服务器的基本操作和管理;

前端node.js服务的进程管理,问题排查,资源监控等运维操作

使用shell编写TCE,SCM,Docker脚本,完成服务编译和部署

课程准备:linux的物理机或云主机,可以运行shell脚本

          本地的vscode安装bash debug插件,升级到4.x以上

          Npm全局安装zx依赖

1:基础概念

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

终端模拟器:关联虚拟tty的输入输出软件

Tty:和终端等价,早期指电传印机,在linux中是输入/输出环境teletypewriter

Shell:处理来自终端模拟器的输入,解释执行后输出结果始终端

Bash:shell的一种具体实现

2:语法和命令

类型作用域声明方式规范
自定义变量当前shell=字符串,整形,浮点型,日期型
环境变量当前shell及其子shellExport declare -x 
系统环境变量所以shell启动加载 

父子shell:

当前(父进程)————————>下一条命令

           |————>子进程——|》

变量名=变量名,等号左右无空格 page_size=1  page_num=2

讲明了赋值给变量  _ls=ls

将结果赋值给变量  file_list=S(ls -a)

默认字符串不会进行+运算 total=page_size*page_num  错的

声明变量为整形 let total=page_sizepage_num    declare -I total=page_sizepage_num

导出环境变量 export total  declare -x total

系统环境变量

???(实在看不懂)

运算符和引用

重定向:

输出重定向符号:<  >>

:覆盖写入文件

:追加写入文件

2>:错误输出写入文件

&>正确和错误输出统一写入到文件

 

判断命令:

整数测试

字符串测试

文件测试

语法:

Test condition

[condition]

[[condition]]

 

中括号前后要有空格符

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

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

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

             

 

 

 

 

 

 

 

 

 

 

 

 

函数:

语法: funcName(){echo “abc”;}

function funName(){echo”abc”;}

模块化:

Source[函数库的路径]

常用命令:

3 执行:

1:shell脚本一般以.sh结尾,可有可无

2:启动方式:

执行过程:

字符解析

识别换行符,分号做行的分割,识别连接符,空格,tab符做命令的分割

Shell的展开    重定向,将stdin stdout stderr的文件描述符进行指向变更

执行命令:builtin直接执行,非builtin使用PATH查找,然后启动子程序执行

Shell展开:

大括号展开:前缀,一对大括号,后缀

波浪号展开

参数展开

         

参数展开有五种,详见图片

文件名展开,

4 调试: