《Unix/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”的行。

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

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

上一篇:Ubuntu18.04通过docker使用qq


下一篇:Linux 简介