首页 > 其他分享 >第十章学习笔记

第十章学习笔记

时间:2022-09-18 22:33:30浏览次数:104  
标签:语句 脚本 变量 第十章 笔记 学习 命令 sh 参数

第十章的主要内容是sh编程,包括以下几个方面:

  • sh脚本和不同版本sh
  • 比较了sh脚本和C程序
  • sh变量、sh语句、sh内置命令、常规系统命令和命令替换
  • sh控制语句
  • sh函数编写以及使用参数调用sh函数

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

1.sh脚本

  • sh脚本是一个包含sh语句的文本文件,命令行解释程序sh要执行该语句。
 #! /bin/bash
  # comment line
  echo hello
  • 使用 chmod -x mysh 使其可执行,然后运行该文本文件。sh脚本第一行以#!开始

2.sh脚本与C程序

  • sh脚本和C程序有一些相似之处,但它们在根本上是不同的。
  • sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行。若是可执行命令且为内置命令则直接执行,否则复刻一个子进程来执行命令,并等待子进程终止再继续。
  • C语言必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件,每个变量必须有一个类型,必须有main()函数。
  • 每个变量都是字符串,sh脚本不需要main函数,第一个可执行语句是程序的入口点。

3.命令行参数

  • 可使用与运行sh命令完全相同的参数调用sh脚本
  • 可通过位置参数$0、$1、$2等访问命令行参数,10以上参数必须称为${n}
  • 可用内置变量$#和$*计数并显示命令行参数
  • $# = 命令行参数$1到$n的数量
  • $* = 所以命令行参数,包括$0
  • $S = 执行sh的进程PID
  • $? = 最后一个命令执行的退出状态

4.sh变量

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

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

  • 如果A是一个变量,那么$A是变量的值
  variable=string

 

5.sh中的引号

  • sh中的特殊字符,如$、/、*、>、<等,要想把它们用作普通字符,可使用\或单引号来引用它们
  • 单引号用于引用长字符串,双引号用于保留双引号字符串中的空格。

6.sh命令

  • 内置命令
    • .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,则等待所有活动子进程。
    • read命令:当sh执行read命令时,它会等待来自stdin的输入行。

7.Linux命令

  • echo命令:echo只是将参数字符串作为行回显到stdout,通常将相邻的多个空格压缩为一个空格,除非有冒号
  • expr命令:将两个参数字符串转换为数字,然后对数字执行操作OP,再将得到的数字转换回字符串
    • expr string1 op string2
  • 管道命令:在sh中经常使用管道作为过滤器
    • ps -ax | grep httpd
    • cat file | grep word
  • 其他实用命令:
    • axk:数据处理程序。
    • cmp:比较两个文件。
    • comm:选择两个排序文件共有的行。
    • grep:匹配一系列文件的模式。
    • diff:找出两个文件的差异。
    • join:通过使用相同的键来连接记录以比较两个文件。
    • sed:流或行编辑命令。
    • sort:排序或合并文件。
    • tail:打印某个文件的最后口行。
    • tr:一对一宇符翻译。
    • uniq:从文件中删除连续重复行。

8.命令替换

  • 在sh中,$A会被替换成A值。同样,当sh遇到‘cmd’或$(cmd)时,它会先执行cmd,然后用执行的结果字符串替换成$(cmd)。  
        echo $(ls dir)

     

9.sh控制语句

  • if-else-fi语句
    if [condition]
        then
          statemates
        else
          statements
      fi

     

  • for语句
    for VARIABLE in string1 string2 ... stringn
          do
            commands
          done

     

  • while语句
    while [condition]
        do 
          commands
        done

     

  • until-do语句
    until [$ANS = "give up"]
        do
          echo -n "enter your answer"
          read ANS
        done

     

  • case 语句
    case $variable in
        pattern1)  commands;;
        pattern2)  commands;;
        patternn)  commands;;
      esac

     

 

10.I/O重定向

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

11.调试sh脚本

bash -x mysh

 

 

二、问题与解决思路

  • 问题:大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?

解决:程序设计语言的基本元素是运算符和表达式,必备技能就是该编程语言的基本语句,语义,语用。shell脚本本身和c语言有着许多相似之处,包括一些逻辑控制语句、linux操作命令,同时也有不同的函数定义模式,文件执行步骤等等,但仍然跑不出,变量、算法、函数等程序设计语言的基本要素。

  • 问题:脚本是什么意思?sh脚本与sh有什么区别?
  • 解决: Shell是一种命令语言,shell script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面。
  • 问题:sh控制语句的代码掌握不到位
  • 解决:https://blog.csdn.net/qq_43747991/article/details/115583638

 

标签:语句,脚本,变量,第十章,笔记,学习,命令,sh,参数
From: https://www.cnblogs.com/MRC-/p/16706065.html

相关文章

  • 第三周学习笔记.
    第十章sh编程概要阐述了sh脚本和不同版本的sh;比较了sh脚本与C程序,并指出了解释语言和编译语言的区别;如何编写sh脚本,包括sh变量、sh语句、sh内置命令、常规系统命令和......
  • CSS笔记
    ①CSS引入方式1)(最常用)在<head>元素下引入:【<link rel="stylesheet"href="xx.css">】3)在CSS文件中导入【@importurl(xx.css)】(语句需写在css文件的开头)3)在style......
  • 第十章笔记
     ......
  • 20201306吴龙灿第十章学习笔记
    知识点归纳这一章的主要内容包含了sh编程的绝大部分内容。但是在此之前,还是要强调一下诸如Python、C、Java这些程序语言的特点。1.Python(一)Python是什么?Python是一......
  • 2022-2023-1 20221408《计算机基础与程序设计》第三周学习总结
    这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03这个作业的目标......
  • Redis详细教程笔记
    1.目录2.待更新:集群环境搭建、订阅发布、哨兵机制、主从复制、缓存雪崩与穿透3.笔记链接:https://t.wss.ink/f/9bktugzrk5n复制链接到浏览器打开(过期联系:QQ:8108062......
  • 软件需求分析与系统设计笔记
    软件需求分析与系统设计笔记简介什么是软件?软件是计算机系统中与硬件(hardware)相互依存的另一部分,是程序、支持程序运行的数据以及与程序有关的文档的完整集合。......
  • 20201322陈俊池学习笔记3
    第十章sh编程一、知识点归纳10.1sh脚本sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。创建mysh: #!/bin/bash #commentline echohello使......
  • 《收获,不止Oracle(第二版)》笔记
    第1章意识少做事从学习开始(怎么学习这本书)1.1先学什么颇有学问数据库应用可以分为以下4类:开发、管理、优化和设计。1.2善于规划分类才有效果数据库角色可以分为以下......
  • Java学习之静态方法static
      测试square方法将static删除后产生的问题会报错  所以main方法是一个静态方法,只能调用静态方法,所以平方数方法必须用static修饰......