今天学习了shell脚本和编程这节课,感觉知识点很多也很杂,故写下这篇笔记供后续复习及查漏补缺用。
一、shell语法和命令
1、变量
①自定义变量
②系统环境变量
(关于变量这部分的内容,不论是自定义变量还是系统环境变量还是要在具体的环境中自己实际操作一下,在linux虚拟机环境或者是Visual Studio Code插件中都可以,这样才不会只停留在知识表面,也能加深自己地相关知识的印象)
2、运算符和引用
(运算符这部分的内容和之前学过的语言:python、c、c++还是有异同点的,自己在使用的时候要加以区分,避免混淆)
3、管道
管道与管道符 | ,作用是将前一个命令的结果传递给后面的命令。
语法: cmd1 | cmd2
要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等命令不能直接使用,可以使用xargs预处理。
注意:管道命令仅仅处理stdout(标准输出),对于stderr(标准错误输出)会予以忽略,即管道中如果出现错误它是不会退出或者是报错的,可以使用set -o pipefail设置shell遇到管道错误退出。
4、重定向
5、判断命令
shell中提供了test、[、[[(符号输入问题,正常使用时两个[应没有空格)三种判断符号,可用于整数测试、字符串测试、文件测试
语法: test condition
[condition]
[[condition]]
注意:中括号前后要有空格符
[和test是命令,只能使用自己支持的标志位,<、>、=只能用来比较字符串
中括号内的变量,最好都是用引号括起来
[[更丰富,在整型比较中支持<、>、=,在字符串比较中支持=~正则
6、分支语句
7、循环
8、函数
9、模块化
10、常用命令
二、执行过程及原理
1、执行
2、执行过程
- 字符解析
- 识别换行符、分号(;)做行的分割
- 识别命令连接符(|| && 管道)做命令的分割
- 识别空格、tab符,做命令和参数的分割
- shell展开,例如{1..3}解析为1 2 3
- 重定向,将stdin、stdout、stderr的文件描述符进行指向变更
- 执行命令
- builtin直接执行
- 非builtin使用$PATH查找,然后启动子进程执行
- 收集状态并返回
3、shell展开
①大括号展开
②波浪号展开
③参数展开
④命令替换
⑤数学计算
⑥文件名展开
三、调试和前端集成
1、调试
2、VSCode配置
之前用过VSCode做过前端的项目,这部分的内容可以动手实践一下,加深印象且提高动手能力。
3、前端集成
四、课程总结
五、写在最后
从今天学习的内容以及自己对知识的掌握程度来看,自己还需要在课余时间下很大的功夫。纵然自己所学的专业让自己具备一定的基础,但这还是远远不够的。自己对前端还是很感兴趣的,所以继续加油,快乐学习!