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

91 阅读3分钟

课程主要内容 1.Shell的基础知识和相关语法知识 2.Shell的执行过程和原理 3.Shell的调试 (可以了解一下shell的价值,学习准备:安装Linux系统的物理机或者云主机,可运行shell脚本、本地vscode安装Bash Debug插件,并升级bash到4.x以上、NPM全局安装zx依赖) 一:Shell的基础概念 (一)Shell的概念 Shell是一种能通过文本输入和输出进行交互的计算机用户页面, 主要来处理来自终端的模拟器的一个输入,对输入进行解释和执行最后输出结果给终端。 (二)Shell的发展 主要分为三个阶段:1971年来自贝尔实验室的Ken Thompson为UNIX开发第一个Shell————V6 Shell。 Stephen Bourne 在贝尔实验室为V7 UNIX 所开发Bourne Shell———— sh。 开源组织GNU 为了取代Bourne shell开发了Bourne-Again shell———— Bash。 (三)Shell 的构成 由解释器和编程语言构成。 解释器: bash内置命令,例如echo let read等。 GNU核心工具集。 第三方库,关于node python等封装的模块。 编程语言: 市面上的编程语言几乎都由变量、运算、语句、函数构成。其中变量主要分为自定义变量、环境变量、系统变量。运算分为逻辑运算符和算术运算符,逻辑运算一般是分为真和假即1和0。语句有判断语句、分支语句例如if else、循环语句for语句。

二:Shell的执行过程和原理 (一)如何执行 shell脚本一般以.sh结尾,也可以没有,而且第一行需要指定用什么命令解释器来执行,例如:#!/bin/bash 启动方式可分为四种: 方式一:./filename.sh
执行shell脚本时是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中.子进程中的各项变量在子进程结束后不会影响到父进程。

方式二:bash./ filename.sh
指定解释器启动

方式三:source  执行shell脚本时是在当前shell中执行的,脚本中的各项变量在脚本结束后仍然存在。

(补充)方式四:exec./ filename.sh
shell的内建命令,exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。也就是说当命令结束后,会自动退出当前的shell环境。exec只可以执行shell命令。可以将自定义脚本拷贝到/usr/sbin目录下后执行。
(二)执行过程 1.字符解析 2.shell的展开:大括号展开{},波浪号展开~,参数展开,命令替换{},命令替换(...)、'...' 3.重定向,将stdin、stdount、stderr的文件描述进行指向式变更 4.执行命令:builtin直接执行,非builtin使用$PATH查找,启动子程序进程执行 5.收集状态并返回

三:3.Shell的调试和前端集成 (一)调试:普通log,使用echo、printf。使用set命令。vscode debug插件 (二)VSCode配置:Shellman代码提示和自动补全、shellcheck代码语法校验、shell-format代码格式化、Bash Debug支持单步调试 (三)前端集成:node中通过exec、spawn调用命令。shell脚本中调用node命令。借助zx等 库进行JavaScript、shell script的融合。