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

学习笔记3

时间:2023-09-24 21:36:34浏览次数:32  
标签:脚本 文件 Shell 知识点 笔记 学习 命令 sh

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

一门程序设计语言具有一些共同的要素和技能,无论是Python、C还是Java,以下是其中一些必备的要素和技能:

  1. 语法:了解语言的基本语法规则,包括变量、数据类型、运算符、控制流语句(如条件语句和循环语句)、函数、类等。

  2. 数据结构:掌握常见的数据结构,如数组、链表、栈、队列、树等,以及它们的操作和应用。

  3. 算法:理解常见的算法和算法设计技巧,如排序算法、搜索算法、图算法等,能够分析算法的时间复杂度和空间复杂度。

  4. 输入和输出:学会从用户或外部文件中获取输入数据,并能够将计算结果输出到屏幕或保存到文件中。

  5. 错误处理:具备处理异常和错误的能力,包括错误检测、错误处理和异常处理机制。

  6. 文件操作:能够读取和写入文件,处理文件的内容和结构。

  7. 模块和库:了解如何使用语言提供的模块和库,以及如何引入第三方库来扩展语言的功能。

  8. 调试和测试:熟悉调试工具和技术,能够定位和修复代码中的错误,并编写有效的测试用例。

  9. 编程范式:了解不同的编程范式,如面向过程编程、面向对象编程、函数式编程等,能够根据需求选择合适的范式进行编程。

在Shell脚本中,这些要素和技能也可以呈现出来,尽管Shell脚本相对于其他编程语言来说更加简单和脚本化。以下是一些在Shell脚本中展现这些要素和技能的方式:

  1. 语法:编写Shell脚本时,需要了解Shell的基本语法,包括变量的定义和使用、条件语句(如if-else)、循环语句(如for和while)、函数的定义和调用等。

  2. 输入和输出:使用Shell脚本可以通过标准输入(键盘输入)或命令行参数获取输入数据,并通过标准输出(屏幕输出)将结果显示给用户。

  3. 错误处理:在Shell脚本中,可以使用条件语句和特定的命令来检测和处理错误,比如使用if语句判断命令执行的返回值,或者使用trap命令捕获和处理信号。

  4. 文件操作:Shell脚本可以使用命令行工具来处理文件,如读取文件内容、写入文件、复制、移动、删除等。

  5. 调试和测试:可以使用Shell提供的调试工具和技术,如echo命令输出调试信息,使用set -x启用调试模式等。

  6. 脚本组织:可以将Shell脚本分解为多个函数或模块,使用函数来实现代码的复用和组织。

需要注意的是,Shell脚本相对于Python、C或Java等编程语言来说,更多地用于自动化任务和脚本编程,对于大型应用程序的开发可能不够灵活和高效。但无论是哪种编程语言,掌握这些基本要素和技能对于编程能力的提升都非常重要。

学习笔记:sh编程

知识点归纳

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

2.sh脚本与C程序
sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行。(可执行则执行,否则复制子进程执行)
C语言必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件,每个变量必须有一个类型,必须有main()函数。

3.命令行参数
可使用与运行sh命令完全相同的参数调用sh脚本,如
mysh one two three

$0s是程序名本身,$1到$n是程序的参数
内置变量$#和$*计数并显示命令行参数

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

4.sh变量:
内置变量有 PATH 、HOME 、TERM
用户还可使用任何符号作为sh变量

5.sh命令
内置命令:
.file:读取并执行文件
break [n]:从最近的第n个嵌套循环中退出
cd [dirname]:更换目录
continue [n]:重启最近的第n个嵌套循环
eval [arg...]:计算一次参数并让sh执行生成的命令。
exec [arg...]:通过这个sh执行命令,sh将会退出。
exit [n]:使sh退出,退出状态为n。
export [var…]:将变量导出到随后执行的命令.
trap [arg] [n]:接收到信号n后执行参数。
umask [ddd]:将掩码设置为八进制数 ddd 的。
wait pid]: 等待进程 pid,如果没有给出pid,则等待所有活动子进程。
read命令: 当sh执行read命令时,它会等待来自stdin的输入行。

6.Linux命令
echo命令
将参数字符串回显到stdout
expr命令
可通过expr命令间接更改sh变量的值
管道命令:
在sh脚本中经常使用管道作为过滤器

实用命令
axk:数据处理程序。
cmp:比较两个文件。
comm:选择两个排序文件共有的行。
grep:匹配一系列文件的模式。
diff:找出两个文件的差异。
join:通过使用相同的键来连接记录以比较两个文件。
sed:流或行编辑命令。
sort:排序或合并文件。
tail:打印某个文件的最后口行。
tr:一对一宇符翻译。
uniq:从文件中删除连续重复行。

sh函数

  func()
	{
	    # function code
	}

sh中的通配符
*:可扩展到当前目录中的所有文件,最为有用
?:查询某文件名中的字符
[]:查询文件名中一对[]中的字符

实践##

利用sh命令实现计算最大公约数的程序
相关的代码:

#!/bin/sh

# 读取用户输入的两个整数
echo "请输入两个整数:"
read num1
read num2

# 检查输入是否为整数
if ! [ "$num1" -eq "$num1" ] 2>/dev/null || ! [ "$num2" -eq "$num2" ] 2>/dev/null; then
  echo "输入无效,请输入整数。"
  exit 1
fi

# 使用辗转相除法计算最大公约数
a=$num1
b=$num2
while [ $b -ne 0 ]; do
  remainder=$((a % b))
  a=$b
  b=$remainder
done

# 输出最大公约数
echo "最大公约数为: $a"

运行结果:

苏格拉底挑战

  1. 知识点1:sh脚本

    我在学习sh脚本知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。

 - 针对我sh脚本知识点,我理解了吗?

 - 我的回答结束了,请对我的回答进行评价总结。

  1. 知识点2:sh命令

    我在学习sh命令知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。

    • 针对我sh命令知识点,我理解了吗?

    • 我的回答结束了,请对我的回答进行评价总结。

问题与解决思路

在学习过程中,我遇到了以下问题,并使用chatgpt等AI工具解决:

  1. 问题1:不知道怎么运行脚本文件


要使用chmod +x myscript.sh命令赋予权限

标签:脚本,文件,Shell,知识点,笔记,学习,命令,sh
From: https://www.cnblogs.com/zqr031029/p/17726707.html

相关文章

  • 20230924学习总结
    1、DataGrip连接hive数据库DataGrip是JetBrains旗下的一款数据库管理软件,通过它能更方便的操作虚拟机中的hive数据库 依次点击+ ->数据源->ApacheHive进入配置链接界面 主机处填虚拟地址,用户密码填虚拟机账号密码(配置无误情况下仍可能连接失败,等候几分钟重试即可)2......
  • Java语法学习——运算符
    一、基本的算术运算符、+符号做连接符1.基本的算术运算符   为了掌握基本的算术运算符的使用,我们在IDEA里新建一个package(it.com.operator),然后在这下面新建一个Javaclass(OperatorDemo1):packageit.com.operator;publicclassOperatorDemo1{publicstaticvoid......
  • 学习笔记3 第十章的自学归纳
    第十章sh编程10.1sh脚本1.可执行性:Shell脚本需要设置可执行权限,使用chmod+xscript.sh命令添加执行权限,然后可以通过./script.sh执行脚本。2.解释器指定:在脚本的第一行使用#!/bin/sh或#!/bin/bash来指定解释器。sh是BourneShell的标准解释器,而bash是Bourne......
  • 学习笔记3
    第10章sh编程——教材知识点归纳这一章课本为我们介绍的是sh编程内容,sh是一种脚本,是一种可以实现在linux中批量执行命令的文件。10.1~10.2sh脚本、sh脚本和C程序sh是Linux下进行批处理的脚本,我觉得它类似于windows下的bat脚本。可见sh脚本的逻辑和C语言等程序设计语言有很多......
  • Service mesh 学习02 Istio基础
    一、Istio架构概述1.Pilot提供服务发现和路由规则2.Mixer策略控制:服务调用限流3.citadel安全作用,可以保证服务间的通信安全4.Enovy代理:处理服务的流量二、自动注入sidecar-injector:会修改应用程序的描述信息,注入sidecar描述信息:创建pod的yaml文件三、流量拦截根据iptables路由规......
  • C语言学习记录---函数4
    汉诺塔问题(递归)#include<stdio.h>//定义汉诺塔函数voidhanoi(intn,charA,charB,charC){if(n==1){printf("将盘子从%c移动到%c\n",A,C);}else{//将n-1个盘子从A移动到Bhanoi(n-1,A,C,B);//将第n个盘子从......
  • 学习笔记3(第十章)
    一、知识点归纳1、本章的主要学习重点在本章节中,我们将深入探讨sh脚本的各个方面。首先,我们会了解sh脚本是什么,以及它与C语言在结构和功能上的主要区别。接下来,我们会详细学习如何编写sh脚本,其中包括变量的定义和使用、不同类型的语句结构、命令的执行、常规的系统命令以及命令......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》第三周学习笔记
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 《信息安全系统设计与实现》第三周学习笔记
      一门程序设计语言有哪些必备的要素和技能:语法:掌握该语言的基本语法和规则,包括变量、数据类型、运算符、控制结构等。数据结构:了解该语言中常用的数据结构,如数组、链表、栈、队列、树、图等,以及它们的实现方法和性能分析。算法:了解常见的算法和设计模式,包括排序、搜索、......
  • 信息安全系统设计与实现学习笔记3
    信息安全系统设计与实现学习笔记3一、知识点归纳以及自己最有收获的内容知识点归纳程序设计语言的要素和技能包括语法、语义和语用。这在shell脚本中体现在各类命令中。语言基本成分包括数据成分、运算成分和控制成分。第10章sh编程sh脚本是包含sh语句的文本文件,由sh解释......