• 20191330雷清逸 学习笔记3


    20191330 雷清逸 学习笔记3(第十章)

    一、知识点归纳以及自己最有收获的内容

    知识点归纳:

    大纲:

    本章讨论了sh编程,阐述了sh脚本和不同版本的sh;比较了sh脚本与C程序,并指出了解释语言和编译语言的区别;详细说明了如何编写sh脚本,包括sh变量、sh语句、sh内置命令、常规系统命令和命令置换;解释了sh控制语句,其中包括测试条件、for循环、while循环、do-until循环、case语句等,并示范了它们的用法;说明了如何编写sh函数以及使用参数调用sh函数;还举例说明了sh脚本的广泛应用,包括Linux系统的安装、初始化和管理。

    本章中重要知识点归纳:

    sh脚本与C程序区别:

    1.sh脚本中,每个变量都是字符串;C语言程序中需要声明变量类型。

    2.sh脚本不需要main()函数,而C语言一定要有一个main()函数。

    命令行参数:

    1.在sh脚本中,可以通过位置参数$0、$1、$2等访问命令行参数。

    2.内置变量:

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

    3.注意$10会将内置变量看为(1和0,正确的写法是:){10}

    sh变量:

    1.除了内置变量,用户可以使用任何符号作为sh变量,不需要声明。

    2.所有sh变量值都是字符串,未赋值的sh变量是NULL字符串。

    3.如果A是一个变量,那么$A是变量的值。

    sh中的引号:

    1.sh有许多特殊字符,如$、/、*、<、>等。要想把它们用作普通字符,可使用或单引号来引用它们。

    2.用于引用单个字符。单引号用于引用长字符串,双引号用于保留双引号字符串中的空格。

    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命令:echo只是将参数字符串作为行回显到stdout。它通常将相邻的多个空格压缩为一个空格,除非有引号。

    • expr命令:因为所有的sh变量都是字符串,所以我们不能直接把它们改为数值,该命令会将两个参数字符串转换为数字,然后对数字执行(二进制)操作OP,再将得到的数字转换回字符串,举例:I = $(espr $I + 1)。

    • 管道命令:在sh脚本中经常使用管道作为过滤器。

    • 实用命令:

      • awk:数据处理程序。
      • cmp:比较两个文件。
      • comm:选择两个排序文件共有的行。
      • grep:匹配一系列文件的模式。
      • diff:找出两个文件的差异。
      • join:通过使用相同的键来连接记录以比较两个文件。
      • sed:流或行编辑命令。
      • sort:排序或合并文件。
      • tail:打印某个文件的最后n行。
      • tr:一对一字符翻译。
      • uniq:从文件中删除连续重复行。

      sh控制语句:

      1.在sh中,0为TRUE,而非0为FALSE。

      2.if-elif-if-elif复合语句:这类似于C语言的if-else if-else,只是sh使用elif而不是else if。

      3.复合条件:sh也允许在复合条件中使用&&(AND)和||(OR),但是语法比C语言更加严格。条件必须用一对匹配的双括号[[和]]括起来。

    自己最有收获的内容:

    本章向我们具体介绍了sh的用法,在本章中,我体会到了shell简单、灵活的优点,它对于linux系统的自动化管理非常有帮助,可以让系统管理员的工作变得容易、简单、高效。shell脚本可以在unix和linux系统中灵活移植。shell脚本方便获取和修改源码,不需要编译。shell在linux很多地方都用到,熟悉shell命令,可以帮助解决一些故障问题。对于一个系统运维工程师来说是必要的。而且面试都会涉及到shell编程的内容。

    二、问题:总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如何呈现出来的?

    答:首先,我认为对于学习一门程序设计语言来说,最重要的是自学能力。在第一学习学习python时,我就体会到自学能力对于学习程序设计语言的重要,对于不断更新的技术文档,没有人能立马理解其中的内容,这就需要我们有良好的自学能力。其次,动手能力也十分重要,一道编程题,一种循环,可以有无数种写法,倘若只将其在脑内还原,不上手实践,则永远也学不会程序设计语言,每天保持一定的代码书写量对于学习程序设计语言十分重要。最后,我认为是永不放弃的精神,在编写程序的过程中,很容易出现报错的情况,找出错误,修改错误是一个漫长的过程,只有不断坚持,永不放弃,仔仔细细地检查每一行代码,才能完成该程序的编程。在以上三点中,shell脚本对于自学能力的要求也十分高,并且它能够简化问题,类型只有字符串型,易检查错误。

    三、实践内容与截图,代码链接

    编写了一个shell函数,能够按要求输出相应位置的字符串。



  • 相关阅读:
    html标签嵌套规则
    关于setTimeout和Promise执行顺序问题
    vue基础
    new操作符具体干了什么
    ["1", "2", "3"].map(parseInt)
    线性表
    树的一些概念和性质
    A*与IDA*
    树上启发式合并
    启发式合并
  • 原文地址:https://www.cnblogs.com/leo-skr/p/15339257.html
Copyright © 2020-2023  润新知