逸致

导航

学习笔记3

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

一门程序设计语言具有一些共同的要素和技能,无论是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命令赋予权限

posted on 2023-09-24 21:21  逸致  阅读(30)  评论(0)    收藏  举报