Shell脚本 | 青训营笔记

170 阅读2分钟

学习shell的价值

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

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

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

课程准备:

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

一 shell基础概念

1.概念 屏幕截图 2023-05-03 210346.png

2.发展

屏幕截图 2023-05-03 210733.png

3.构成

屏幕截图 2023-05-03 210836.png

二 语法和命令

三种类型;自定义变量,环境变量,系统环境变量

作用域;当前shell,当前shell及其子shell,所有shell

声明方式;=,export·declare-x,启动加载

规范;字符串,整形,浮点型,日期型

自定义变量

  • #变量名等于变量值(符号左右不能有空格)

  • #将命令复制给变量

  • #将命令结果赋值给变量

  • #默认字符串,不会进行 + 运算

  • #声明变量为模型

  • #导出环境变量

屏幕截图 2023-05-03 212454.png

系统环境变量

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

运算符和引用

屏幕截图 2023-05-03 214018.png

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

语法:cmd1|cmd2

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

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

判断命令

屏幕截图 2023-05-03 215110.png

分支语句

屏幕截图 2023-05-03 215254.png

循环

屏幕截图 2023-05-03 215358.png

函数

屏幕截图 2023-05-03 215512.png

注意事项

  • shell自上面下执行,函数必须在使用前定义

  • 函数获取变量和shell script类似,0代表函数名,后续参数通过0代表函数名,后续参数通过1,$2...获取

  • 函数内return仅仅表示函数执行状态,不代表函数执行结果

  • 返回结果一般使用echo,printf,在外面使用$(),"获取结果

  • 如果没有return,函数状态是上一条命令的执行状态,存储在$?中

常用命令

屏幕截图 2023-05-03 221142.png

三 执行过程和原理

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


1 #!/bin/bash


1 #!/usr/bin/env bash

2.启动方式

屏幕截图 2023-05-03 222150.png

课程总结

屏幕截图 2023-05-03 222252.png