shell脚本和编程
学习shell的价值:
课程准备 一台安装了linux系统的物理机或者云主机,可运行shell脚本
本地的 vscode安装 Bash Debug 插件,并升级 bash到 4.x以上
Npm 全局安装zx依赖
shell基础概念
tty:teletypeWriter的简称,和终端等价,linux中的输入输出环境
shell充当着解释器的作用,同时它又是一种编程语言
各种shell实现:bash,zsh等
命令和语法
变量类型:自定义变量、环境变量、系统环境变量。具体见下方表格
父子shell:子进程shell执行后交还执行权给父进程
默认变量为字符串变量,若需要整型变量,需要使用let或declare -i,declare有多种选项,详情见shell文档
系统环境变量:如PATH等
配置文件和加载:分为login和non-login,进而继续细分为交互式和非交互式
运算符和引用:见ppt表格,使用时查询(注意各种引号,括号的区别)
nohup搭配&实现shell关闭时应用依然能在后台运行
管道:|(非常常用,搭配grep,xargs等,但是忽略了stderr)
重定向:分为输入重定向和输出重定向
各种判断命令:test,[ , [[ 三种,用于字符串测试,整数测试,文件测试等
分支语句:if和case
循环:while,until,for
函数:两种语法,return不返回结果,$获取参数和结果,内部变量限定为local
模块化:在当前shell中执行另一个.sh文件
执行过程和原理
脚本第一行指定命令解释器
三种启动方式:文件名,解释器,source
执行过程:
1.字符解析
2.shell展开(多种,详情见ppt)
3.重定向
4.执行命令
5.收集状态并反返回
调试与前端集成
调试:
1.echo,printg
2.set
3.vscode debug插件
前端集成:
1.node调用shell命令
2.shell脚本中调用node
3.借助zx等库进行javascript、shell script的融合
感想
这次shell编程课节奏很快,适合对shell比较了解的同学,对零基础不是很友好,讲课节奏很快,覆盖了shell非常多的方面,但是是个很好的复习shell、拓展shell知识的机会(尤其是shell展开部分)。shell中有许多命令,但对我们来说首选的是掌握那些常用的shell命令,对于其余的命令在有需要时查询、使用即可。当然了,如果未来主要使用linux进行日常工作,那么熟练掌握shell知识还是非常有必要的。听完课如果不自己动手敲代码的话很容易就忘记了,需要大家在今后的学习中不断实践。