一门程序设计语言必备的要素和技能
一门程序设计语言具有一些共同的要素和技能,无论是Python、C还是Java,以下是其中一些必备的要素和技能:
-
语法:了解语言的基本语法规则,包括变量、数据类型、运算符、控制流语句(如条件语句和循环语句)、函数、类等。
-
数据结构:掌握常见的数据结构,如数组、链表、栈、队列、树等,以及它们的操作和应用。
-
算法:理解常见的算法和算法设计技巧,如排序算法、搜索算法、图算法等,能够分析算法的时间复杂度和空间复杂度。
-
输入和输出:学会从用户或外部文件中获取输入数据,并能够将计算结果输出到屏幕或保存到文件中。
-
错误处理:具备处理异常和错误的能力,包括错误检测、错误处理和异常处理机制。
-
文件操作:能够读取和写入文件,处理文件的内容和结构。
-
模块和库:了解如何使用语言提供的模块和库,以及如何引入第三方库来扩展语言的功能。
-
调试和测试:熟悉调试工具和技术,能够定位和修复代码中的错误,并编写有效的测试用例。
-
编程范式:了解不同的编程范式,如面向过程编程、面向对象编程、函数式编程等,能够根据需求选择合适的范式进行编程。
在Shell脚本中,这些要素和技能也可以呈现出来,尽管Shell脚本相对于其他编程语言来说更加简单和脚本化。以下是一些在Shell脚本中展现这些要素和技能的方式:
-
语法:编写Shell脚本时,需要了解Shell的基本语法,包括变量的定义和使用、条件语句(如if-else)、循环语句(如for和while)、函数的定义和调用等。
-
输入和输出:使用Shell脚本可以通过标准输入(键盘输入)或命令行参数获取输入数据,并通过标准输出(屏幕输出)将结果显示给用户。
-
错误处理:在Shell脚本中,可以使用条件语句和特定的命令来检测和处理错误,比如使用
if
语句判断命令执行的返回值,或者使用trap
命令捕获和处理信号。 -
文件操作:Shell脚本可以使用命令行工具来处理文件,如读取文件内容、写入文件、复制、移动、删除等。
-
调试和测试:可以使用Shell提供的调试工具和技术,如
echo
命令输出调试信息,使用set -x
启用调试模式等。 -
脚本组织:可以将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:sh脚本
我在学习sh脚本知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。
- 针对我sh脚本知识点,我理解了吗?
- 我的回答结束了,请对我的回答进行评价总结。
-
知识点2:sh命令
我在学习sh命令知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。
-
针对我sh命令知识点,我理解了吗?
-
我的回答结束了,请对我的回答进行评价总结。
-
问题与解决思路
在学习过程中,我遇到了以下问题,并使用chatgpt等AI工具解决:
- 问题1:不知道怎么运行脚本文件
要使用chmod +x myscript.sh
命令赋予权限