首页 > 其他分享 >第十章学习笔记

第十章学习笔记

时间:2022-09-18 20:26:34浏览次数:63  
标签:语句 文件 第十章 笔记 学习 命令 sh 参数 执行

第十章学习笔记

程序设计语言有哪些必备的要素和技能

在经过了两年多程序设计语言的学习之后,我个人认为要做好程序设计要有以下必备的要素和技能:
1,抽象问题的能力
在遇到各种需要解决的问题时,其实很多看似复杂的结构和问题,都能够化解成一个个小的部分,也可以抽象。如果不能够把问题抽象,把细节舍去,那么就会陷入钻牛角尖的死胡同,似乎每个问题都会产生新的问题,让问题不断地增殖。只有你能把问题抽丝剥茧,抽象出来才能把问题简化从而破解问题。我们只有从纷繁复杂的现象中抽取事物的本质,从具体事物提炼出正交的概念,才能驾驭这些概念,才能在一个低复杂度的世界中进行思考。

2,需要肯下功夫多加练习
想要熟练的掌握一门语言,就需要不断地练习和背诵。学习程序设计,就和学习一门语言一样,需要不断重复的练习,只有持之以恒的操练和记忆代码,才能够真正学会程序编程。

3,具有较好的数学基础
另外需要数学思维能力,编程需要很强的逻辑思维能力。编程就是编写一个程序,程序是我们处理一件“事情”的流程的程序化表示,流程体现逻辑,或者可以说算法体现逻。而逻辑思考和算法与数学息息相关,比如从事算法方面工作的最好把微积分、线性代数、概率论与数理统计、离散数学等等学好。数学好逻辑比较强,算法的最高境界是数学。

sh脚本与c程序

sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句;C程序与其在根本上是不同的。首先,sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行,相反,C程序必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件;其次,在C程序中,每个变量必须有个类型,相反,在sh脚本中,每个变量都是字符串;最后,每个C程序必须有一个main()函数,每个函数必须定义一个返回值类型和参数,相反,sh脚本不需要main函数。

命令行参数

$#=命令行参数$1到$n的数量;
$*=所有命令行参数,包括$0;
此外,sh还有与命令执行相关的以下内置变量:
$S=执行sh进程PID;
$?=最后一个命令执行的退出状态(如果成功,则为0,否则为非0)

sh变量

内置变量有PATH、HOME、TERM等,除此之外,用户还可使用任何符号作为sh变量,未赋值的sh变量是NULL字符串。

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中读取一行并为变量赋值;
shift:将位置参数$2 $3...重命名为$1 $2...;
trap[arg][n]:接收信号n后执行参数;
umask[ddd]:将掩码设置为八进制数ddd的;
wait[pid]:等待进程pid,如果没有给出pid,则等待所有活动子进程。

Linux命令

sh可以执行所有的linux命令
echo命令:echo只是将参数字符串作为行回显到stdout;
expr命令:因为所有的sh变量都是字符串,所以我们不能直接把它们改为数值;
管道命令:在sh脚本中经常使用管道作为过滤器;
实用命令:awk:数据处理程序;cmp:比较两个文件;comm:选择两个排序文件共有的行;grep:匹配一系列文件的模式;diff:找出两个文件的差异;join:通过使用相同的键来连接记录以比较两个文件;sed:流或行编辑命令;sort:排序或合并文件;tail:打印某个文件的最后n行;tr:一对一字符翻译;uniq:从文件中删除连续重复行。

sh控制语句

If-else-if语句:它比较两个参数字符串,以确定条件是否为真,需要注意的是,在sh中,0为TRUE,而非0为FALSE,这与在C程序中完全相反。这是因为当sh执行命令时,它会获得执行的退出状态,如果执行成功,则为0,否则为非0。If-elif-else-fi复合语句条件:与在C语言中一样,sh也允许在复合条件中使用&&(AND)和||(OR),但语法比C语言更加严格,条件必须用一堆匹配的双括号[[和]]括起来。
or语句:sh中的for语句作用类似于C语言中的for循环。

image

while语句:当条件为真时,sh将重复执行do-done关键字的命令。

until-do、case语句:类似于C语言中的do-until语句。
image

continue和break语句:它们的工作原理与在C语言中完全相同。

I/O重定向

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

sh中的通配符

file *:列出当前目录中所有文件的信息
ls *.c:列出当前目录中所有以.c结尾的文件
?通配符:查询某文件名中的字符
[]通配符:查询文件名中一对[]中的字符
file [ab]:包含字符a或b的所有文件名
ls [xyz]:列出所有包含x、y或z的文件名
ls [a-m]:列出包含a到m范围内字符的所有文件名
命令分组:在sh脚本中,可以使用{}或()对命令进行分组

eval语句

(1)参数替换:扫描命令行,将任何$x替换为它的值,但只执行一次,即不能再次替换任何产生的$符号。
(2)命令替换:用替换行’pwd’。
(3)通配符扩展:当sh执行该文件时,它将new*展开为以abc开头的文件名,这些会把所有以abc开头的文件名复制到目标目录中。

最有收获的内容

代码实践

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

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

sh语句:image
read命令:当sh执行read命令时,它会等待来自stdin的输入行。它将输入行划分为几个标记,分配给列岀的变量。read的一个常见用法是允许用户与正在执行的sh进行交互。
image
linux 命令
echo命令:echo只是将参数字符串作为行回显到stdout。它通常将相邻的多个空格压 缩为一个空格,除非有引号。
image

命令替换
$A会被替换成A的值。
$(cmd) 先运行cmd命令将成果替换成 $(cmd)的值。

image

sh控制语句(以if举例):
image

sh函数:image

遇到的问题和解决方法

1,在一开始因为没有仔细阅读书本,只是单纯的照抄课本,将命令行参数写入了txt文件,但用./却运行不出来,后来仔细读了书发现要在执行前用chmod +x mysh(这里是文件名)才能时期生成一个能运行的文件,于是问题就解决了。

2,对于基本语法的问题,都从这篇博客中可以找到答案https://blog.csdn.net/missshirly/article/details/7496809

标签:语句,文件,第十章,笔记,学习,命令,sh,参数,执行
From: https://www.cnblogs.com/charliecza/p/16704640.html

相关文章

  • 22级 20221314詹全晨 《计算机基础与程序设计》第三周学习总结
    作业信息班级的链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业模板:https://www.cnblogs.com/rocedu/p/9577842.html#JXJC作业要求:https://www.cnblogs......
  • SpringCloud学习笔记(整理)
    目录版本选择springcloud组件构建微服务Eureka服务注册与发现【停更】配置eurekaserver配置client微服务注册到server使用@LoadBalanced访问eureka上注册的服务actuator......
  • 第十章学习笔记
    本章介绍了sh脚本和其与C语言的区别,如何编写sh脚本(变量、语句、命令、常规系统命令和命令替换),解释了sh控制语句和他们的使用方法,说明了如何编写sh函数以及使用参数调用函数......
  • 2022-2023-1 20221424俞鸿若劼 《计算机基础与程序设计》 第三周学习总结
    作业信息班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#JXJC学习目标:数字分类与计数法、位......
  • 学习笔记3
    学习笔记遇到问题:.sh文件运行结果错误。解决方案:输出值前应加$符号。实践内容:计算前一百个自然数的和。实践截图:......
  • 2022-2023-1 20221325 《计算机基础与程序设计》第三周学习总结
    作业信息班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#JXJC作业目标:数字分类与计数法位......
  • 第三周学习总结
    这周我学习了linux课本第10章首先总结一下第十章的主要内容*一、sh脚本sj脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。1开头程序必须以下面的行开始......
  • 《计算机基础与程序设计》第三周学习总结
    20221427 曹甲松 《计算机基础与程序设计》第三周学习总结2022-2023-120221427《计算机基础与程序设计》第三周学习总结作业信息这个作业属于哪个课程2022-2......
  • 学习笔记3
    一、sh脚本创建一个文本文件mysh,包含:I/bin/bashcommentlineechohello使用chmod+xmysh使其可执行二、sh脚本与C程序首先,Sh是一个解释程序,逐行读取sh脚本文件并......
  • 20201206韩进学习笔记3
    sh编程sh脚本包含sh语句的文本文件,命令解释程序sh要执行该语句。sh脚本与C程序sh:解释程序,逐行读取sh脚本文件并直接执行,若行是可执行命令且为内置命令,则可直接执行。......