2023-2024-1 20211306 密码系统设计与实现课程学习笔记3
20211306 密码系统设计与实现课程学习笔记3
学习任务详情
自学教材第10章,提交学习笔记
大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?
- 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容
“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
核心是要求GPT:“请你以苏格拉底的方式对我进行提问”
然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?
如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”
GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下
- 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图
- 实践过程截图,代码链接
- 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)
一、第十章(sh编程)学习总结
摘要
本章讨论sh编程,阐述了sh脚本和不同版本的sh,比较了sh和C程序,说明了如何编写sh脚本,包括其变量、语句、内置命令、常规系统命令和命令替换,解释了sh控制语句并示范其用法。
- sh脚本
一个包含sh语句的文本文件,命令解释程序sh要执行语句,我们可以创建一个文本文件
使用chmod+x mysh执行。
sh脚本第一行通常是#!组合开始
- sh脚本与C程序
sh脚本与C程序有相似之处,但在根本上是不同的
sh是一个解释程序,逐行读取并执行,而C程序必须先编译到一个二进制可执行文件;sh中每个变量都是字符串,而C程序每个变量必须有一个类型;C程序必须有一个main()函数,而sh第一个可执行语句就是程序的入口处。
- 命令行参数
可使用与运行sh命令完全相同的参数调用sh脚本,如:mysh one two three
在sh脚本中,可以通过位置参数$0等访问命令行参数,前十个可用\(0~9,其他必须\){10~n},n>10。
在sh中,\(表示替换,要按原样使用\),必须加\或者''。
- sh变量
许多内置变量:PATH、HOME、TERM等,不需声明,sh变量可以用以下方法设置或者赋值
- sh中的引号
sh有许多特殊字符,如$、/、*、>、<等
- sh语句
- sh命令
- 内置命令
sh有许多内置命令,由sh执行,不需要创建新进程
- Linux命令
sh可以执行所有的Linux命令
- 命令替换
- sh控制语句
- if-else-if 语句
每个语句必须带单独的一行上,但是多个语句之间用分号分开时,sh允许多个语句在同一行
- if-elif-else-if复合语句
- for 语句
类似C语言中的for循环
- while语句
- until-do语句
- case语句
- continue和break语句
与在C语言中一样,continue重启最近循环的下一个迭代,break退出最近循环。与在C语言中完全相同。
- I/O重定向
当进入sh命令时,我们可以指示sh将I/O重定向到除默认stdin、stdout和sterr以外的文件。
- 嵌入文档
可以指示输出命令从stdin获取输入,将其回显到stdout,知道遇到预先安排的关键字
- sh函数
- sh中的通配符
- 星号通配符:sh中最有用的通配符是*,可扩展到当前目录中的所有文件
- ? 通配符:查询某文件名中的字符
- []通配符:查询文件名中一对[]中的字符
- 命令分组
在sh脚本中,可以用{}或()对命令进行分组。
-
eval语句
-
调试sh脚本
sh脚本可由带有-x选项的子sh运行以进行调试,如:bash -x mysh
- sh脚本的应用
- 实际操作
简单的sh脚本:“Hello World!”
计算两个数字之和
简单的for循环使用
命令行参数调用
sh脚本变量的使用
简单if语句使用
二、苏格拉底提问GPT
三、Linux代码运行
- makefile实现
四、问题解决