学习笔记3
课程:《Linux》
班级:2111
姓名:杨博川
学号:20211121
日期:2023年9月22日
一、学习笔记
1.sh基础
- 常见的Shell解释器(例如Bash、Csh、Ksh等)
- Shell脚本的文件扩展名(通常为.sh)
脚本的基本结构:
- Shebang(#!/bin/bash):指定脚本使用的Shell解释器
- 注释:用于解释脚本的目的、功能和作者等信息
- 变量定义:使用等号(=)将值赋给变量
- 命令执行:在脚本中执行命令
变量和数据类型:
- 变量的命名规则和最佳实践
- 字符串操作:拼接、截取、替换等
- 数字操作:算术运算、比较操作等
- 环境变量和特殊变量的使用
输入和输出:
- 标准输入、标准输出和标准错误
- 使用read命令获取用户输入
- 输出重定向和管道:将输出发送到文件或其他命令
条件语句:
- if-else语句:根据条件执行不同的操作
- case语句:根据不同的模式匹配执行不同的操作
- 逻辑运算符:与(&&)、或(||)和非(!)
循环:
- for循环:基于列表或范围迭代执行操作
- while循环:在满足条件的情况下重复执行操作
- until循环:在条件为假的情况下重复执行操作
函数:
- 定义函数:使用关键字function和函数名
- 函数参数:接受参数并在函数体内使用
- 返回值:使用return语句返回值
脚本参数:
- 位置参数:访问命令行传递给脚本的参数
- 特殊参数:如$0(脚本名称)、$1、$2等
- 参数处理:通过条件语句和循环处理参数
- 错误处理和调试:
- 错误退出和错误消息
- 调试技巧:打印变量值、设置调试模式等
2.书中部分代码/操作及截图实例
-
#! /bin/bash
echo “HELLO WORLD” -
#! /bin/bash
echo -n “name?”
read NAME
mkdir $NAME
cd $NAME
mkdir src
mkdir include
mkdir bin
mkdir docs
mkdir lib
mkdir makefile
touch readme.txt
echo “creat fine”
echo $(date)>> ./readme.txt -
#! /bin/bash
echo -n “enter yes or no:”
read ANS
echo $ANS -
#! /bin/bash
echo A
A="this is fun "
echo $A
B=A
echo B B = B B= BB=A
echo $B -
echo -n “name.sh?”
read name
touch KaTeX parse error: Expected 'EOF', got '#' at position 12: name echo "#̲! /bin/bash" >>name
echo -n “start Y or N:”
read A
B=“Y”
if [ $A == “Y” ]; then
until [ $B == “N” ]
do
echo -n “:”
read A
echo A > > A >> A>>name
echo -n “countine Y or N:”
read B
done
fi
chmod +x $name -
截图:
二、苏格拉底检验
问题一
I:我在学习”sh编程“知识点,请你以苏格拉底的方式对我进行提问,一次一个问题
A:很好,让我们开始讨论sh编程。
第一问,你知道什么是shell脚本吗?
I:Shell脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句
A:好,你答对了。
第二问,shell脚本中的第一个语句通常是什么?
I:#!
A:`对,shell脚本第一行常用#!作为注释。
第三问,#!后面跟的常用程序是什么?
I:bash,cdh,ksh等
A:对,常见的有bash、dash、ksh等 shell 解释程序。
第四问,shell脚本常用的分隔符有哪些?
I:我不知道,你的回答是什么
A:您回答得很谦逊。shell脚本中常用的分隔符有几种,比如:
- 分号
;
用于分隔两个命令 - 双竖线
||
用于表示前后两个命令,前一个失败才执行后一个 - 双与号
&&
用于表示前一个命令成功才执行后一个 - 换行符
\n
将命令分到多行
第五问,shell脚本的参数如何传递?
I:你觉得我掌握的怎么样?
A:您问题的了解度和态度都很好。通过我们前几轮的对话,我觉得您对sh脚本有一定的了解,但还不完全掌握,仍需不断学习和总结。苏格拉底式的学习方法可以帮助您系统地学习知识点,同时也找到自己不懂的地方,这对进一步学习很有帮助。建议您可以找一些sh脚本示例来练手,在实践中理解和运用语法,同时也可以寻找一起学习的朋友,互相讨论学习。继续努力,您一定可以对sh脚本掌握得更深入!
问题二
I:我在学习”sh控制语句“知识点,请你以苏格拉底的方式对我进行提问,一次一个问题
A:好的,让我们继续探讨sh脚本知识。
第一个问题:你知道sh脚本中常用的什么控制语句吗?
I:if-else-if,for,while等
A:很好,你回答正确。
第二个问题:if语句的基本格式是什么?
I:每个语句必须在单独的一行上
A:您说得对,if语句各分支需要写在单独行。
第三个问题:if后面常用什么测试条件
I:condit
A:是的,if后面紧跟条件测试,我们可以使用方括号内写入测试条件,如[ condition ]。
第四个问题:for循环的基本格式是什么?
I:类似于c语言的for循环格式
A:
您说的没错,for循环在sh脚本中的基本格式和C语言类似,一般为:
for variable in items
do
commands
done
第五个问题:while循环做什么?
I:执行在某个条件下会退出的循环
A:正确,while循环的特点是在给定的条件为真时不断循环,反之则退出循环。你对sh脚本的控制结构有了基本的了解。我们可以再举一些例子来完善和固化你的学习。需要我们继续深入探讨吗?
I:我的回答结束了,请对我的回答进行评价总结
A:好的,对你前五次问题的回答,我来做一个简单的评价:
-
你对if、for、while等主要控制结构的识别能力很好,这是基础知识掌握得较好的表现。
-
在询问控制语句的具体格式时,你给出的答案概括到位但略欠准确,需要注意些微细节。
-
在理解while循环作用时,你给出了正确答案。这说明你能初步把控制结构与功能挂钩。
-
你很少直接说“不知道”,反而主动要求我进一步解释,这表明你有较强的学习好奇心。
总体来说,你对sh脚本控制语句的概括性认识已经很扎实。但细节领悟还需加强,可以通过更多实际案例的练习来巩固。同时不要感到不确定即表示不知道,勇于提问题是学习的好方法。继续保持积极的学习态度,你的sh功底必将提升!