ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

《Unix/Linux系统编程》第十章学习笔记

2021-09-22 20:03:37  阅读:112  来源: 互联网

标签:语句 ... 脚本 编程 命令 Unix sh Linux 执行


sh编程

本章讨论了sh编程,阐述了sh脚本和不同版本的sh;比较了sh脚本与C程序,并指出了解释语言和编译语言的区别;详细说明了如何编写sh脚本,包括sh变量、sh语句、sh内置命令、常规系统命令和命令替换;解释了sh控制语旬,包括测试条件、for循环、 while 循环、do-until循环、case语句等;说明了如何编写 sh 函数以及使用参数调用 sh 函数。

sh脚本

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

sh脚本与C程序

这两者之间有一些相似之处,但在根本上是不同的。
sh是一个解释程序,逐行读取脚本文件并直接执行这些行。如果行是可执行命令且为内置命令,那么sh可直接执行。否则,他会复刻一个子进程来执行命令,并等其终止后再继续。
C语言必须先编译连接到一个二进制可执行文件,然后通过sh的子程序运行。

命令行参数

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

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

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...
  • trap [arg[n]:接收到信号 n 后执行参数。
  • umask [ ddd ]:将掩码设置为八进制数 ddd 的。
  • wait [pid];等待进程 pid ,如果没有给出 pid ,则等待所有活动子进程。
  • read 命令:当 sh 执行 read 命令时,它会等待来自 stdin 的输入行。它将输人行划分为几个标记,分配给列出的变量。

sh控制语句

if-else-if语句

test string1 COMP string2 OR [string1 COMP string2]
除了比较字符串或数值,还可以测试文件操作中的文件类型和文件属性。

for语句
点击查看代码
 for VARIABLE in string1 string2...stringn
   do
      commands
   done
while语句
点击查看代码
 while [confition]
    do
      commands
    done

I/O重定向

当进入sh命令时,我们可以指示sh将I/O重定向到除默认文件意外的文件。
>file stdout转向文件,如果文件不存在,将会创建文件。
>>file stdout追加到文件。
<file 将文件用作stdin;文件必须存在并具有r权限。
<<word 从“here”文件中获取输入,直到只包含“word”的行。

学习一门程序设计语言有哪些必备的要素和技能?

我认为学习程序设计语言必需的技能是实践与纠错。实践让我们对于语法以及相关的知识点印象更加深刻,完成一项任务后需要纠错与反思,如果有能力的话要进行改进。这样的过程才会将一门语言融会贯通。

标签:语句,...,脚本,编程,命令,Unix,sh,Linux,执行
来源: https://www.cnblogs.com/ruier/p/15321370.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有