Shell脚本和编程丨青训营笔记

71 阅读2分钟

学习shell的价值

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

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

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

1shell基础概念

概念

image.png 命令行解释器,处理来自终端模拟器的输入,解释执行结果之后输出结果给终端

发展

image.png

构成

image.png 解释器、编程语言

2命令和语法

变量

image.png 父子shell

image.png

自定义变量

image.png

declare命令基本选项

  • 给变量设定类型属性
  • 取消变量的类型属性 -a 将变量声明为数组类型 -i 将变量声明为整数型 -x 将变量声明为环境变量 -r 将变量声明为只读变量 -p 显示指定变量的被声明类型 image.png

系统环境变量

image.png

配置文件加载

·登录式 login shell

·非登录式 non-login shell

交互式、非交互式(sh 执行test.sh脚本)

image.png 使用source执行脚本

运算符和引用

image.png

nohup node sever.js &clear 后台关闭仍然运行

管道

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

语法:cmd1丨cmd2

image.png

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

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

image.png

重定向

image.png

输入重定向和输出重定向

判断命令

test、[、[[三种判断符号,可用于:整数、字符串和文件测试

image.png

注意:

(1)中括号前后要有空格符

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

(3)中括号内的变量,最好都是用引号括起来

(4)[[更丰富,在整型比较中支持<、>、=,在字符串比较中支持=~正则

image.png

分支语句

语法1 image.png

语法2

image.png

循环

·while循环 while condition ; do 程序段; done image.png

·until循环 until condition ; do 程序段; done

条件成立时跳出循环

·for循环 for var in[words...]; do 程序段; done

image.png

函数

(1)语法1: funcName(){ echo "abc";}

(2)语法2 function funName(){ echo "abc";}

image.png

注意

image.png

image.png

模块化

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

常用命令

image.png

3执行过程和原理

执行

1、shell脚本一般以.sh结尾,也可以没有;第一行需要指定用什么命令解释器来执行

image.png

2、启动方式

image.png

执行过程

image.png

shell展开

image.png

(1)大括号展开

image.png

(2)波浪号展开

image.png

(3)参数展开

image.png

(4)命令替换

image.png

(5)数学计算

image.png

(6)文件名展开

image.png

4调试和前端集成

调试

image.png

VSCode配置

image.png

前端集成

image.png

5课程总结

image.png