首页 > 其他分享 >20201322陈俊池学习笔记3

20201322陈俊池学习笔记3

时间:2022-09-18 22:02:47浏览次数:95  
标签:脚本 语句 笔记 命令 sh 参数 陈俊池 执行 20201322

第十章 sh编程

一、知识点归纳

10.1 sh脚本

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

创建mysh:

  #! /bin/bash
 # comment line
 echo hello

使用 chmod -x mysh 使其可执行,然后运行mysh。sh脚本的第一行通常以#!组合开始,通常称为shebang。当sh见到shebang时,会读取脚本所针对的程序名并调用该程序。

10.2 sh脚本与C程序

sh脚本和C程序有些相似之处,但它们在根本上是不同的。

sh脚本:一个解释程序,逐行读取sh脚本文件并直接执行这些行。如果行是可执行命令且为内置命令,那么sh可直接执行。否则,它会复刻一个子进程来执行命令,并等待子进程终止后再继续,这与它执行单个命令行完全一样。在sh脚本中,每个变量都是字符串,因此不需要其他类型。sh脚本不需要main函数。在sh脚本中,第一个可执行语句是程序的入口点。

C程序:必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件。在C程序中,每个变量必须有一个类型,例如char、int、float、派生类型(如struct)等。每个C程序必须有一个main()函数,每个函数必须定义一个返回值类型和参数。sh脚本不需要main函数。

10.3 命令行参数

可使用与运行sh命令完全相同的参数调用sh脚本,如:

mysh one two three

在sh脚本中,可以通过位置参数$0, $1, $2等访问命令行参数。前10个命令行参数可以作为$0~$9被访问。其他参数必须称为${10}~${n},其中n>10。或者,可以通过稍后显示的shift命令查看它们。通常,$0是程序名本身,$1到$n是程序的参数。在sh中,可用内置变量$#和$* 计数并显示命令行参数。 $# = 命令行参数$1到$n的数量 $* = 所有命令行参数,包括$0 此外,sh还有与命令执行相关的以下内置变量。 $S = 执行sh的进程PID $? = 最后一个命令执行的退出状态(如果成功,则为0,否则为非0)

10.4 sh变量

内置变量:PATH、HOME、TERM等。除了内置变量外,用户还可以使用任何符号作为sh变量。不需要声明。所有的sh变量值都是字符串。未赋值的sh变量是NULL字符串。sh变量可用以下方法设置或赋值:

variable=string     # NOTE: on white spaces allowed between tokens

10.5 sh中的引号

sh有许多特殊字符,如$、/、*、>、<等。要想把它们用作普通字符,可使用\或单引号来引用它们。 通常,\用于引用单个字符。单引号用于引用长字符串。单引号内没有替换。双引号用于保留双引号字符串中的空格,但在双引号内会发生替换。

10.6 sh语句

sh语句包括所有Unix/Linux命令,以及可能的I/O重定向。此外,sh编程语言还支持控制sh程序执行的测试条件、循环、case等语句。

10.7 sh命令

10.7.1 内置命令

sh有许多内置命令,这些命令由sh执行,不需要创建一个新进程。下面列出一些常用的内置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...。

  • traparg:接收到信号n后执行参数。

  • umask[ddd]:将掩码设置为八进制数ddd的。

  • wait[pid]:等待进程pid,如果没有给出pid,则等待所有活动子进程。

10.7.2 Linux命令

  • echo命令:echo只是将参数字符串作为行回显到stdout,通常将相邻的多个空格压缩为一个空格,除非有冒号

  • expr命令:将两个参数字符串转换为数字,然后对数字执行操作OP,再将得到的数字转换回字符串

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

  • 其他实用命令:

    axk:数据处理程序。

    cmp:比较两个文件。

    comm:选择两个排序文件共有的行。

    grep:匹配一系列文件的模式。

    diff:找出两个文件的差异。

    join:通过使用相同的键来连接记录以比较两个文件。

    sed:流或行编辑命令。

    sort:排序或合并文件。

    tail:打印某个文件的最后口行。

    tr:一对一宇符翻译。

    uniq:从文件中删除连续重复行。

10.8 命令替换

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

10.9 sh控制语句

  • if-else-fi语句

  • if-elif-else-fi语句

  • for语句

  • while语句

  • until-do语句

  • case 语句

  • continue和break语句

10.10 I/O重定向

I/O重定向有以下形式和含义:

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

10.12 sh函数

  • sh函数定义

      func()
    {  
       # function code
    }

二、问题与解决思路

shell编程相对于C编程、java编程有什么优势呢?

Shell 是指一种 C 语言编写的应用程序。主要作用是获取用户输入的指令及参数,调用现有的程序实现用户的意图;用户在没有图形界面的情况下 shell 是用户访问系统内核服务的唯一途径(类似于Windows 下的 DOS) ;

   Shell 也是一种程序设计语言。它允许用户将想要执行的命令按照一定的语法格式书写在文本文件*.sh 中,随后执行 shell 脚本文件中的指令集合,把这种记录指令的脚本文件叫做 shell 脚本程序。Shell 脚本编程跟 JavaScript、 PHP、 Python 编程形式一样,只要有文本编辑器和执行脚本的解释器就可以了。

  简单来说 Shell 是一个用 C 语言编写的程序,可以解释并执行 shell 脚本文件,同时它也是用户使用 Linux 的桥梁;

脚本的好处至少有以下几点: 1、避免开发人员反复进行一些列重复步骤。比如:联网+检查安装包+安装软件+执行命令,如果经常需要做类似的操作,可以考虑将操作写成脚本; (注:IDE为集成开发环境) 2、提高编译效率。利用编写好 Makefile 文件(shell 脚本) ,只需要一个 make 命令,整个工程就开始自动编译。因为 Makefile 文件中已经事先指明了源文件的编译顺序、依赖关系等重要的编译信息; 3、不依赖 IDE 就可以实现功能编码, 这在陌生的机器(不具备安装软件的权限) 上显得尤为重要; 4、方便调用机器下的所有资源。 类似于胶水一样,可以将各类资源(命令、程序、脚本等) 拼接在一起使用。

三、实践内容与截图

使用shell编程编写一个脚本,求斐波那契数列的前10项及其总和

 



标签:脚本,语句,笔记,命令,sh,参数,陈俊池,执行,20201322
From: https://www.cnblogs.com/iris2333/p/16705952.html

相关文章

  • 《收获,不止Oracle(第二版)》笔记
    第1章意识少做事从学习开始(怎么学习这本书)1.1先学什么颇有学问数据库应用可以分为以下4类:开发、管理、优化和设计。1.2善于规划分类才有效果数据库角色可以分为以下......
  • Javaweb学习笔记第八弹
    继续MyBatis学习SQL语句警告提示问题产生原因:IDEA和数据库没有建立连接,不识别表的信息解决方式:在IDEA中配置MySQL数据库连接在IDEA的Maven项目中,如果想要直接通过IDEA......
  • python爬虫入门笔记(随便记记,持续更新)
    准备:安装库pip3installbeautifulsoup4apt-getinstallpython-lxmlpip3installparse 一、获得从baidu.com中能够跳转到的页面(的链接)importrequests......
  • 第十章读书笔记
    SH编程1.sh脚本2.c和sh的区别3.命令行参数4.Sh变量$A相当于C语言中的指针。5.sh中的引号即需要转义(将原本具有特殊意义的字符普通化)6.sh语句(简......
  • 《Unix&Linux系统编程》第十章学习笔记
    第10章sh编程10.1sh脚本​ sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。sh脚本的第一行通常以#!组合开始,成为shebang,当主sh见到shebang时,会读取脚本......
  • 第十章学习笔记
    第十章学习笔记程序设计语言有哪些必备的要素和技能在经过了两年多程序设计语言的学习之后,我个人认为要做好程序设计要有以下必备的要素和技能:1,抽象问题的能力在遇到各......
  • SpringCloud学习笔记(整理)
    目录版本选择springcloud组件构建微服务Eureka服务注册与发现【停更】配置eurekaserver配置client微服务注册到server使用@LoadBalanced访问eureka上注册的服务actuator......
  • 第十章学习笔记
    本章介绍了sh脚本和其与C语言的区别,如何编写sh脚本(变量、语句、命令、常规系统命令和命令替换),解释了sh控制语句和他们的使用方法,说明了如何编写sh函数以及使用参数调用函数......
  • 学习笔记3
    学习笔记遇到问题:.sh文件运行结果错误。解决方案:输出值前应加$符号。实践内容:计算前一百个自然数的和。实践截图:......
  • 学习笔记3
    一、sh脚本创建一个文本文件mysh,包含:I/bin/bashcommentlineechohello使用chmod+xmysh使其可执行二、sh脚本与C程序首先,Sh是一个解释程序,逐行读取sh脚本文件并......