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

46 阅读2分钟

Shell基础概念

概念

image.png

发展

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

构成

image.png

命令和语法

  • 变量

image.png

  • 自定义变量

image.png

  • 系统环境变量

image.png

  • 配置文件和加载 source ~/.bashrc

运算符和引用

image.png

管道

  • 管道与管道符|,作用是将前一个命令的结果传递给后面的命令
  • 语法:cmd1|cmd2
  • 要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,Is、mv等不能直接使用,可以使用xargs预处理
  • 注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set-o piprfail 设置管道预处理退出

重定向

  • 输出重定向符号
  1. :覆盖写入文件

  2. :追加写入文件

  3. 2>:错误输出写入文件
  4. &>:正确和错误输出统一写入到文件中
  • 输入重定向符号
  1. <
  2. <<

判断命令

  • 语法:
  1. test condition
  2. [condition]
  3. [[condition]]

分支语法

  1. if condition;then

程序段 elif condition;then 程序段 else 程序段 fi

  1. case$变量in:

“第一个变量内容”) 程序段 ;; “第一个变量内容”) 程序段 ;; *) 程序段 ;; esac

循环

  • while循环
  • until循环
  • for循环

函数

  • funcName(){echo“abc”;}
  • function funcName(){echo "abc";}
  • 注意:

image.png

模块化

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

常用命令

image.png

执行过程和原理

执行

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

image.png

  1. 启动方式

image.png

执行过程

  1. 字符解析
  2. shell展开
  3. 重定向
  4. 执行命令
  5. 收集状态并返回

shell展开

image.png

调试和前端集成

调试

  1. 普通log,使用echo、printf
  2. 使用set命令
  3. vscode debug插件

vscode配置

image.png

前端集成

image.png