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

85 阅读2分钟

前言

今天是我加入青训营学习计划的第3篇笔记

学习Shell的好处

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

Shell基础

1.Shell的一些概念

概念含义
终端获取用户输入,显示运算结果的硬件设备
ttyteletypeWriter的简称,和终端等价,早期指电传印机,在Linux是输入/输出环境
终端模拟器Mac Terminal,iTerm2, 关键虚拟tty的输入/输出软件
Shellcommand interpreter, 处理来自终端的模拟器输入,解释执行之后输出结果的终端
Bashshell的一种具体体现

2.Shell的反展

image.png

时间线梳理

image.png

3.语法和命令

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

父子shell, 类似于java中的父类调用子类的过程

image.png

以下代码为简单的赋值变量的例子

# 变量名等于变量值  
page_size=1
page_num=2  

# 将命令复制给变量  
_ls=ls

# 将命令结果赋值给变量  
file_list=$(ls -a)

# 默认字符串,不会进行 + 运算  
total=page_size*page_num   
# 上述段代码会计算错误

# 声明变量为整数 
let total=page_size*page_num

declare -i total=page_size*page_num  
# 上述正确

# 导出环境变量 
export total

declare -x total

注意:"="两边不能有空格!

declare 选项以及含义

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

系统环境变量

变量名含义常见操作
$0当前shell 名称/脚本名称1,1, 2等可以获取到传入参数
$#传入脚本的参数数量if[$# -gt1]
$*传入脚本的所有参数
$?上条命令执行的代码if[$? -eq 0];
$PS1命令提示符export PS1="\u@h \w>"
$HOME用户主文件夹cd ~
$PATH全局命令的搜索路径PATH=$PATH:[新增路径]

配置以及加载

image.png

管道

管道符号: |
作用: 是将前一个命令的结果传递给后面的命令
语法: cmd1 | cmd2

#!/bin/bash  
cat platform.access.log | grep ERROR  

netstat -an | grep ESTABLISHED  | wc -l  
   
find . -maxdepth l -name "*.sh" | xargs ls -l

常用命令

image.png

课程小结

image.png