首页 > 其他分享 >学习笔记3

学习笔记3

时间:2023-09-23 20:15:12浏览次数:39  
标签:语句 expr 笔记 学习 命令 sh 执行 替换

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

标签:语句,expr,笔记,学习,命令,sh,执行,替换
From: https://www.cnblogs.com/dkyzhouyikai/p/17722534.html

相关文章

  • Hive学习3(数据库操作DML、join、hive函数)
    1.对数据库操作数据定义语言(DataDefinitionLanguage,DDL),是SQL语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括database、table等。DDL核心语法由CREATE、ALTER与DROP三个所组成。DDL并不涉及表内部数据的操作。1.1创建数据库created......
  • Nginx第三天学习笔记
    Nginx第三天学习笔记在经过前两天的初步学习和了解之后,今天我们继续深入探讨Nginx的配置和高级功能。一、更复杂的配置到目前为止,我们讨论的Nginx配置都比较基础。实际上,Nginx的配置语言非常强大,可以处理更复杂的需求。例如,我们可以配置基于IP的虚拟主机,设置HTTPS,甚至可以进行负载......
  • 【刷题笔记】60. Permutation Sequence(改)
    题目Theset [1,2,3,...,*n*] containsatotalof n!uniquepermutations.Bylistingandlabelingallofthepermutationsinorder,wegetthefollowingsequencefor n =3:"123""132""213""231""312"&quo......
  • 【刷题笔记】63. Unique Paths II
    题目Arobotislocatedatthetop-leftcornerofa m x n grid(marked'Start'inthediagrambelow).Therobotcanonlymoveeitherdownorrightatanypointintime.Therobotistryingtoreachthebottom-rightcornerofthegrid(marked'......
  • 记在51CTO的第一篇博文,学习网络安全相关知识记录
    作为一名在校大学生,除去学校所学知识,还有许多课余时间自学的知识,现在通过博文的方式记录下来并且进行分享,有不足之处请多多指出!一、学习笔记部分前后端分离前端:JS框架,API传输数据(使用接口传输,前后端两个网页)前端只用于显示页面,后端在其他域名下,使用后台管理软件来指向前端网站前端......
  • 学习笔记3 截图 代码
    一、苏格拉底挑战二、使用chatgpt解决问题三、实践过程实践代码hello:hello.omain.ogcc-Iinclude-obin/hellohello.omian.ohello.o:gcc-c/home/yuanyi/study/src/hello.c-Iinclude-ohello.omain.o:gcc-c/home/yuanyi/study/src/......
  • Linux文件管理学习感悟与笔记
    1.文件目录与路径 绝对路径与相对路径的区别绝对路径:路径的写法,由根目录/写起,例如:/usr.share/doc这个目录相对路径:路径的写法,不是由/写起,例如由/usr/share/doc要到/usr/share/man底下时,可以写成:cd../man这就是相对路径的写法2.目录与文件操作处理目录的常用命......
  • 第三周学习总结
    第三章学习总结 第一部分第10章sh编程知识归纳 sh脚本概念sh脚本是包含sh语句的文本文件。sh语句即shell语句,是一种脚本语言,每一条内容都是特定格式的指令,系统可以使用脚本解析器翻译这些指令。sh脚本文件执行方式执行一个文本文件mysh:chmod+xmyshsh脚本和C程序sh脚......
  • SVN 学习
    SVNSVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。SVN属于C/S结构软件,分为客户端和服务器端服务端软件:VisualSVN网址:https://www.visualsvn.com/客户端软......
  • 【笔记】P6419 [COCI2014-2015#1] Kamp 答辩做法
    模拟赛T3,用非常答辩的做法过掉了。5k代码写完后竟只调了10分钟首先考虑指定出发点如何算答案。用一眼看出法,就是把出发点也定为必经点后,\(必经点连通距离\times2\-\出发点到某一必经点的最大距离\)。这个想法可以由P9304的思路得到。再有,要求树上所有点的答案,多半是换根......