学习笔记3

第10章 sh编程

0.结构与理解

sh代码在包含sh语句的文本文件中,通常以 #!开头,文件为.sh

创建并编写.sh文件后发现不是可执行程序,询问gpt如何执行:

学习得知,第一种添加权限的方法,chmod 是一个用于修改文件权限的命令,而 +xchmod 命令的一个选项,表示为文件添加可执行权限。

第二种是用sh命令的方法,不需要./路径名,直接从当前文件夹运行。

在执行单行命令时,按以下步骤执行:

  (1)参数替换

  (2)命令替换

  (3)通配符扩展

  参数替换过程中,$x替换为它的值只执行一次,即不能再次替换任何产生的$符号;在命令替换中先执行一次计算;

    于是有eval命令:相当于将$x替换到底,然后直接让sh执行生成的命令行。可以省去一些替换语句,但也有可能使代码变得难以理解。

1.参数与变量(只有字符串类型变量)

位置参数的定义在调用程序时申明,直接写在程序名后 $0~$9,${10}~${n}

任何符号都能作为sh变量,定义时直接A,调用时用$A。

2.sh命令

特殊字符:

  $:

    1. $@:表示所有位置参数的列表。
    2. $#:表示位置参数的数量。
    3. $?:表示上一个命令的退出状态码。
    4. $$:表示当前脚本的进程ID。
    5. $USER:表示当前用户的用户名。
    6. $HOME:表示当前用户的主目录路径。
    7. $PWD:表示当前工作目录的路径。
    8. $S执行sh进程的PID。

  \ “” '':

    通常\用于引用单个字符,''单引号用于引用长字符串,没有替换;“”双引号内会发生替换,保留空格。

指令:

  sh语句包含了所有unix/linux命令

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

    expr命令:expr str1 op str2,具体解释如下

      在书上的例子有I=$(expr $I + 1),疑惑为何要给expr的结果加$,询问gpt:

expr 命令的结果加上 $ 是为了在Shell脚本中获取并引用 expr 命令的输出结果。在Shell中,$ 符号用于引用变量的值。

当使用 expr 命令执行数学运算或其他操作时,它的结果将被打印到标准输出(stdout)。为了将这个结果存储到一个Shell变量中或在脚本中进一步使用,我们可以使用 $ 符号来引用 expr 命令的输出

  内置命令:

    read命令:等待来自stdin的输入行,讲输入行划分为几个标记,分配给列出的变量。

  命令替换:当sh遇到'cmd'或$(cmd)时,会先执行cmd,然后用执行的结果字符串替换$(cmd)。

 

sh函数:

  由于sh逐行执行命令,所以必须在任何可执行语句之前定义sh脚本中的所有函数。

通配符:

  *:可扩展到当前目录中的所有文件

  ?:查询某文件名中的字符

  [ ]:查询文件名中包含[ ]中任意字符的

控制语句:

  *在sh中,0为TRUE,而非0为FALSE

  循环结构:有for语句、while语句和until-do语句。for语句在每次迭代中变量接受一个参数字符串值,并执行关键字do和done之间的命令。while也类似,在条件符合情况下执行do-done关键字中的命令。until-do语句类似于C语言中的do-until语句,不论如何会先执行一次do-done中的命令

苏格拉底挑战:

程序设计语言的必备要素和技能:

  1. 语法和语义:掌握语言的基本语法规则和关键字,理解语句的执行逻辑和含义。

  2. 数据类型和变量:熟悉数据类型的概念和不同类型的使用,了解变量的定义、赋值和使用方法。

  3. 控制流:理解和使用条件语句、循环语句和分支语句,以控制程序的执行流程。

  4. 函数和模块化:熟悉函数的定义和调用,理解模块化编程的概念和方法,以提高代码的可重用性和可维护性。

  5. 数据结构和算法:了解常见的数据结构(如数组、列表、字典等)和基本算法,能够选择和使用适当的数据结构和算法来解决问题。

  6. 错误处理和异常处理:学习如何处理错误和异常情况,以增强程序的健壮性和可靠性。

  7. 调试和问题解决能力:培养调试代码和解决问题的能力,能够找到和修复程序中的错误和异常情况。

posted @ 2023-09-23 19:55  周意凯  阅读(8)  评论(0编辑  收藏  举报