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

183 阅读2分钟

Shell 脚本和编程

课程介绍

这节课我们学习shell基础和语法,shell执行过程和原理,shell调试和前端集成。

学习shell 的价值:

  1. Linux 服务器的基本操作和管理
  2. 前端Node.js服务的进程管理、问题排查、资源监控等运维操作
  3. 使用shell 编写TCE、SCM、Docker 脚本,完成服务编译和部署

课程准备

  • 一台安装了linux 系统的物理机或者云主机,可运行shell脚本
  • 本地的vscode 安装Bash Debug 插件, 并升级bash到4.x以上
  • Npm全局安装zx依赖

Shell基础概念

概念

  • Shell是操作系统最外的一层
  • 物理终端=>软件终端tty=>终端模拟器=>shell
  • Shell是Linux内核的一个外层保护工具,也是一个命令行解释器,负责将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。 image.png

发展

3个阶段

  • Ken Thonpson(来自贝尔实验室)在1971年为 UNIX开发了第 个shell,称为 V6 shell
  • Stephen Boume 在贝尔实验室 为 V UNIX 所开发的Bourne shell 即 sh
  • 开源组织GUN为了取代 Boume shell开发的Bourne-Again shell,即Bash

构成

  1. 命令行解释器
  2. 编程语言

image.png

语法和命令

变量

  • shell中的变量类型
  1. 自定义变量
  2. 环境变量
  3. 系统环境变量
类型作用域
自定义变量当前shell
环境变量当前shell及其子shell
系统变量所有shell
声明方式规范
=字符串、整型、浮点型、日期型
export、declare -x
启动加载
  • 父子shell

当父进程在第三方或核心工具时会启动子进程去执行,执行完后交还给父进程,父进程再继续执行下一条命令

自定义变量

#变量名=变量值(等号左右不能有空格)
page_size=1
page_num=2
#将命令复制给变量
_ls=ls
#将命令结果赋值给变量
file_list=$(ls -a)
#默认字符串,不会进行 + 运算

ini
复制代码
total=page_size*page_num X  (错误)

#声明变量为整型

ini
复制代码
let total=page_size*page_num 
declare -i total=page_size*page_num 

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

选项含义
-给变量设定类型属性
+取消变量的类型属性
-a将变量声明为数组类型
-i将变量声明为整数型
-x将变量声明为环境变量
-r将变量声明为只读变量
-p显示指定变量的被声明的类型