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

72 阅读2分钟

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文档

系统环境变量:如HOMEHOME,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知识还是非常有必要的。听完课如果不自己动手敲代码的话很容易就忘记了,需要大家在今后的学习中不断实践。