SHELL脚本和编程
学习shell的价值:
1、Linux服务器的基本操作和管理 2、前端Node.js服务的进程管理、问题排查、资源监控等运维操作 3、使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署
需要
1、一台安装了 linux 系统的物理机或者云主机,可运行 shell 脚本
2、本地的 vscode 安装 Bash Debug 插件,并升级 bash 到4.x以上
3、Npm 全局安装 zx 依赖
shell 命令行界面或终端,文本输入和输出进行交互的计算机用户界面,允许用户通过输入命令执行操作,运行程序和管理系统
1、命令
2、提示符 等待用户输入时显示一个提示符
3、文件系统 shell管理文件系统
4、管道 多个命令通过管道链接起来
5、环境变量 铜环环境变量村粗系统级别的配置
6、脚本 允许用户编写一系列命令的脚本文件
7、快捷键 tab 键命令哥文件名的自动补全 ctrl c 中断正在执行的命令
**shell和bash **
bash 是shell的一种实体表现
shell的构成 即使解释器 也是编程语言
基本命令和语法 自定义变量 当前shell 用= 字符串浮点 环境变量 当前shell和子shell exportdeclare-x 系统环境变量
自定义变量 变量名=变量值,(等号两边不能有空格) 定义两个变量进行赋值 page size=1 page-num=2
将命令复制给变量,这样可以通过变量名来访问命令结果 -1s=1s
将命令结构赋值给变量,可以通过变量名来访问命令结果 file-list=$(1s -a)
默认是字符串,不会进行+运算,所以total 的值是
total=page-size *page-num
声明变量为整形-i,后续的数值计算中,total会被当作整形去计算
let total=page-sizepage-num declare -i total=page-sizepage-num
导出环境变量,使得在子进程中也可用 export total declare -x total
declare选项的含义
- 给变量设定类型属性
- 取消变量的类型属性 -a 将变量声明为数组类型 -i 将变量声明为整数型 -x将变量声明为环境变量 -r 将变量声明为只读变量 -p 显示指定变量的被声明的类型
系统环境变量
配置文件加载 登录login shell 进入主机需要输入用户名和密码 非登录式non-login shell 交互式和非交互式
运算符和引用
管道与管道符 作用是将前一个命令的结果传递给后面的命令
语法:cmd1 | cmd2
要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理
注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出
重定向
判断命令
shell中提供了test、[、[[三种判断符号,可用于:
- 整数测试
- 字符串测试
- 文件测试
语法:
- test condition
- [ condition ]
- [[ condition ]]