《信息安全系统设计与实现》第三周学习笔记
语法:掌握该语言的基本语法和规则,包括变量、数据类型、运算符、控制结构等。
数据结构:了解该语言中常用的数据结构,如数组、链表、栈、队列、树、图等,以及它们的实现方法和性能分析。
算法:了解常见的算法和设计模式,包括排序、搜索、贪心、动态规划、回溯等,以及如何应用它们来解决实际问题。
面向对象编程:了解该语言中的面向对象编程思想,包括类、对象、继承、多态等,以及如何使用它们来实现软件的设计和开发。
异常处理:了解该语言中的异常处理机制,包括异常的分类、捕获、处理和抛出等,以及如何使用它们来提高程序的稳定性和可靠性。
文件操作:了解该语言中的文件操作机制,包括文件的打开、读写、关闭等操作,以及如何使用它们来实现文件的读取和写入。
网络编程:了解该语言中的网络编程机制,包括网络协议、套接字、网络通信等,以及如何使用它们来实现网络应用程序的开发。
在Shell脚本中,这些要素和技能也有相应的呈现方式:
语法:Shell脚本采用Bash或其他Shell语言的语法规则。这包括变量的定义和使用、条件语句(if-else)、循环语句(for、while)、函数的定义和调用等。
数据结构:Shell脚本可以使用数组(Array)和关联数组(Associative Array)来存储和处理数据。数组可以用于存储一组有序的数据,关联数组可以使用键值对存储数据。
算法:Shell脚本中的算法可以通过条件语句和循环语句实现各种逻辑操作,例如搜索、排序、过滤等。也可以使用递归来实现需要重复执行的操作。
面向对象编程:Shell脚本不直接支持面向对象编程,但可以使用函数来模拟面向对象的概念。可以将功能封装到函数中,并使用参数传递和返回值来实现代码的模块化和重用。
异常处理:Shell脚本可以使用条件语句和错误处理机制来捕获和处理异常情况。例如使用if-else语句判断执行结果,并根据情况进行相应的处理;还可以使用陷阱(trap)命令来处理信号和错误。
文件操作:Shell脚本可以使用各种命令来进行文件的读取、写入、复制、移动、删除等操作。例如,可以使用cat、grep等命令来读取文件内容,使用echo、printf等命令来写入文件内容。
网络编程:Shell脚本可以使用诸如curl、wget等命令来进行基本的网络通信,例如发送HTTP请求、下载文件等。也可以使用套接字(socket)编程相关的命令和函数来实现更高级的网络应用。
sh脚本:
是一个包含sh语句的文本文件,命令解释程序sh要执行该语句,例如我们可以创建一个文本文件mysh,包含:
/bin/bash
comment hello
echo hello
使用chmod +x mysh使其可执行,然后运行mysh
sh脚本与c程序
sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行。sh脚本不需要main函数,第一个可执行语句是程序的入口点。
C语言必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件,每个变量必须有一个类型,必须有main()函数。
命令行参数:
命令行参数的目的是为了灵活地定制程序的行为。例如,一个图片处理程序可能接受一个文件名作为参数来指定要处理的图片,还可能接受一个选项参数来指定要执行的具体操作(如缩放、旋转等)以及相应的参数值(如缩放比例、旋转角度等)。
在Shell脚本中,可以使用$1、$2、$3等变量来获取命令行参数的值。其中,$1表示第一个参数,$2表示第二个参数,依此类推。还可以使用特殊变量$0表示当前脚本的名称,$#表示参数的个数,$@表示所有参数的列表等。
sh变量:
除了普通变量外,Shell还支持特殊变量。这些变量通常以$符号开头,并在Shell脚本中具有特殊意义,例如:
$0:当前脚本的名称
$#:命令行参数的个数
$@:命令行参数的列表
$?:上一个命令的退出状态
sh中的引号:
sh有许多特殊字符,如$、/、*、>、<等,要把他们当做普通字符,可使用\或单引号来引用他们
sh语句:
sh语句包括所有Unix/Linux命令,以及可能的I/O重定向
示例:
ls
ls > outfile
date
cp f1 f2
mkdir newdir
cat < filename
此外,sh编程语言还支持控制sh程序执行的测试条件、循环、case等语句
sh命令:
file:读取并执行文件
break [n]:从最近的第n个嵌套循环中退出
cd [dirname]:更换目录
continue [n]:重启最近的第n个嵌套循环
eval [arg...]:计算一次参数并让sh执行生成的命令。
exec [arg...]:通过这个sh执行命令,sh将会退出。
exit [n]:使sh退出,退出状态为n。
export [var…]:将变量导出到随后执行的命令.
trap [arg] [n]:接收到信号n后执行参数。
umask [ddd]:将掩码设置为八进制数 ddd 的。
read命令:当sh执行read命令时,它会等待来自stdin的输入行。
linux命令:
echo命令
expr命令
管道命令:在sh脚本中经常使用管道作为过滤器
实用命令:
axk:数据处理程序。
cmp:比较两个文件。
comm:选择两个排序文件共有的行。
grep:匹配一系列文件的模式。
diff:找出两个文件的差异。
join:通过使用相同的键来连接记录以比较两个文件。
sed:流或行编辑命令。
sort:排序或合并文件。
tail:打印某个文件的最后口行。
tr:一对一宇符翻译。
uniq:从文件中删除连续重复行
sh控制语句:
if-else-fi语句
if [condition]
then
statemates
else
statements
fi
-运算符 -eq -ne -lt -gt
if-elif-else-fi语句
if [condition];then
commands
elif [condition2];then
commands
else
commands
fi
for语句
for VARIABLE in string1 string2 ... stringn
do
commands
done
实践:实现一个99乘法表:
苏格拉底提问: