一、任务详情
自学教材第10章,提交学习笔记(10分)
大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?
二、知识点归纳
10.1 sh脚本
sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。sh脚本通常以“.sh”为扩展名,并且必须以“#!/bin/bash”作为第一行,用于指定脚本的解释器。
10.2 sh脚本与C程序
sh脚本和C程序有一些相似之处,但它们在根本上是不同的。
sh是一个解释性程序,逐行读取sh脚本文件并直接执行这些行,如果行是可执行命令且为内置命令,那么sh可直接执行,sh中每个变量都是字符串,因此不需要类型。而C程序必须先编译链接到一个二进制执行文件,然后通过主sh的子进程运行二进制可执行文件,且每个变量必须要有一个类型。C需要有main()函数,sh不需要。
10.3 命令行参数
可以使用与sh命令完全相同的参数调用sh脚本。
可以通过位置参数$0、$1、$2等访问命令行参数
10.4 sh变量
sh有许多内置变量,如PATH、HOME等,可以使用任何符号作为sh变量,不需要声明,所有的sh变量都是字符串,未赋值的sh变量是NULL字符串。
10.5 sh中的引号
使用\或单引号引用特殊字符
10.6 sh语句
包括所有Unix/Linux命令,以及可能的I/O重定向
10.7 sh命令
sh有许多内置命令,由sh执行,不需要创新新进程。
sh可以执行所有的Linux命令
10.8 命令替换
$A会被替换成A,当sh遇到‘cmd’或$(cmd),会执行cmd,然后用执行结果字符串替换$(cmd)
10.9 sh控制语句
sh支持许多执行控制语句。
有if-else-if语句、for语句、while语句、until-do语句、case语句、continue、break语句
10.10 I/O重定向
指示sh将I/O重定向到除默认stdin\stdout和sterr以外的文件
10.11 嵌入文档
输出命令从stdin获取输入,将其回显到stdout,直到遇到预先安排的关键字
10.12 sh函数
定义为:
func()
{
#function code
}
必须在任何可执行语句之前定义sh脚本中的所有函数。
10.13 sh中的通配符
星号通配符:*,可扩展到当前目录的所有文件
?通配符:查询某文件名中的字符
[ ]通配符:查询文件名中一对[ ]中的字符
10.14 命令分组
用{}或()对命令进行分组
10.15 eval语句
sh内置命令,由sh自己执行,不需要复刻新进程。
通过参数替换、命令替换、通配符扩展执行
10.16 调试sh脚本
由带有-x选项的子sh运行
10.17 sh脚本的应用
1.自动化任务和作业调度: sh脚本可用于自动执行重复性任务和作业,从而节省时间和减少手动操作的错误。可以使用工具如crontab来安排定期运行脚本,执行备份、日志清理、数据处理等任务。
2.系统管理和监控: 系统管理员可以编写脚本来sh管理和监控服务器。这包括系统资源的监视、安全性检查、日志文件的分析、软件包管理以及对服务器状态的自动响应。
3.部署和配置管理: 开发人员和运维人员使用sh脚本来自动化应用程序的部署和配置。包括安装依赖项、设置环境变量、启动和停止服务、应用程序的升级等。
4.日志和数据处理: sh脚本在日志分析和数据处理方面非常有用。它们可用于从日志文件中提取信息、生成报告、处理大量数据、文件格式转换以及文本处理等任务。
2.苏格拉底挑战
问题(1)
问题(2)
二、问题与解决思路
问题
(1)如何正确运行sh脚本?
(2)sh脚本是用什么编程语言书写的?
解决思路
问题(1)
问题(2)