《信息安全系统设计与实现》第三周学习笔记

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了《信息安全系统设计与实现》第三周学习笔记脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

第10章 sh编程

教材学习内容总结

本章主要讲了sh脚本的相关知识,包括sh脚本的介绍,sh脚本与c程序的对比,如何编写sh脚本以及如何调用sh函数

一、sh 脚本

sh 脚本是一个包含sh 语句的文本文件,命令解释程序sh要执行该语句。

1、创建一个mysh

#!  /bin/bash
# comment line
echo hello

使用chmod +x mysh 使其可执行

2、命令行参数

在sh脚本中,可以通过位置参数$0、$1、$2等访问命令行参数。其中特殊字符$表示替换,如果需要使用$字符,需加上单引号或者反引号。

$#=命令行参数$1到$n的数量
$*=所有命令行参数,包括$0
$S=执行sh的进程PID
$?=最后一个命令执行的退出状态(成功为0,否则为非0)

二、sh命令

1、内置命令

.file:读取并执行文件。
break [n]:从最近的第n个嵌套循环中退出。
cd [dirname]: 更换目录。
continue[n]:重启最近的第n个嵌套循环。
eval [arg...]:计算一次参数并让sh执行生成的命令。
exec [arg...]:通过这个sh执行命令,sh将会退出。
exIT [n]:使sh退出,退出状态为n。
export [VAR…]:将变量导出到随后执行的命令.
read [var...]:从stdin 中读取一行并为变量赋值。
set [arg...]:在执行环境中设置变量。
shift:将位置参数$2 $3...重命名为 $1 $2...。
trap [arg] [n]:接收到信号n后执行参数。
umask [ddd]:将掩码设置为八进制数 ddd 的。
wait pid]: 等待进程 pid,如果没有给出pid,则等待所有活动子进程。

2、Linux命令

echo命令:将参数字符串作为行回显到stdout。
exPR命令:间接更改sh变量的值。
管道命令:作为过滤器。
实用命令:
axk:数据处理程序。
cmp:比较两个文件。
comm:选择两个排序文件共有的行。
grep:匹配一系列文件的模式。
diff:找出两个文件的差异。
join:通过使用相同的键来连接记录以比较两个文件。
sed:流或行编辑命令。
sort:排序或合并文件。
tail:打印某个文件的最后口行。
tr:一对一宇符翻译。
uniq:从文件中删除连续重复行。

三、sh控制语句

sh支持多种控制语句,可类比c语言的语句。

1、if-else-if语句

C语言的if-else-if语句每个语句必须在单独的一行上,而sh允许多个语句在同一行上 语法格式:

    if condition1
    then
        command1
    elif condition2 
    then 
        command2
    else
        commandN
    fi

2、for语句

语法格式:

    for var in item1 item2 ... itemN
    do
        command1
        command2
        ...
        commandN
    done

命令行格式:

    for var in item1 item2 ... itemN; do command1; command2… done;

3、while语句

while 循环用于不断执行一系列命令,也用于从输入文件中读取数据。 语法格式:

    while condition
        do
            command
        Done

4、untill-do语句

until 循环执行一系列命令直至条件为 true 时停止。 until 循环与 while 循环在处理方式上刚好相反。一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。

语法格式:

    until condition
    do
        command
    done

5、case语句

case为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。 可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

语法格式如下:

    case 值 in
    模式1)
        command1
        command2
        ...
        commandN
        ;;
    模式2)
        command1
        command2
        ...
        commandN
        ;;
    esac

6、continue和break语句

    break命令允许跳出所有循环(终止执行后面的所有循环)。
    continue命令不会跳出所有循环,仅仅跳出当前循环。

四、I/O重定向

    >file:stdout转向文件,如果文件不存在,将会创建文件。
    >>file:stdout追加到文件。
    <file:将文件用作stdin;文件必须存在并具有r权限。
    <<word:从“here”文件中获取输入,直到只包含“word”的行。

五、sh函数

1、sh函数的定义

func()
{
# function code
}

由于sh逐行执行命令,所以必须在任何可执行语句之前定义sh脚本中的所有函数。而在sh函数中无法声明函数原型。

2、通配符

星号(*)通配符:可扩展到当前目录中的所有文件。
?通配符:查询某文件名中的字符。
[]通配符:查询文件名中一对[]中的字符。

3、调试脚本

sh脚本由带有-x选项的子sh运行以进行调试。

    eg:bash -x mysh

子sh将在执行命令之前显示要执行的每个sh命令,包括变量和命令替换。它允许用户跟踪命令执行。如果出现错误,sh将在错误行上停止并显示错误消息。

六、实践

创建一个sh文件

《信息安全系统设计与实现》第三周学习笔记

运行sh文件

《信息安全系统设计与实现》第三周学习笔记

参考链接:https://www.runoob.COM/w3cnote/shell-scripting.htML

脚本宝典总结

以上是脚本宝典为你收集整理的《信息安全系统设计与实现》第三周学习笔记全部内容,希望文章能够帮你解决《信息安全系统设计与实现》第三周学习笔记所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。