Shell 脚本和编程 | 青训营笔记

90 阅读4分钟

一、Shell 基础概念

Shell 是一种命令行解释器,它是一个用户与操作系统内核交互的接口。当用户输入命令时,Shell 解释并执行这些命令,并将结果输出给用户。 在 Shell 中,用户可以使用各种命令来执行不同的任务,例如浏览文件目录、创建、复制或删除文件、安装软件包等等。Shell 还支持变量、条件语句和循环等控制结构,使得用户可以根据需要编写脚本来自动化工作流程。 在 Linux 系统中,默认的 Shell 是 Bash(Bourne-Again SHell),但也有其他 Shell 可供选择,例如 Zsh、Fish 等。此外,Shell 还支持管道、重定向和通配符等高级特性,可以帮助用户更加高效地处理数据和执行任务。

二、命令和语法

可以在 Shell 脚本中使用哪些类型的变量?

 在 Shell 脚本,我们可以使用两种类型的变量: 
系统定义变量
系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过 set 命令查看。 
用户定义变量
用户变量由系统用户来生成和定义,变量的值可以通过命令 "echo $<变量名>" 查看。 

Shell脚本中 $? 标记的用途是什么? 

在写一个 Shell 脚本时,如果你想要检查前一命令是否执行成功,在 if 条件中使用 $? 可以来检查前一命 令的结束状态。

如果结束状态是 0 ,说明前一个命令执行成功。例如:

 root@localhost:~## ls /usr/bin/shar
/usr/bin/shar
root@localhost:~## echo $?
0

如果结束状态不是0,说明命令执行失败。例如:

root@localhost:~## ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~## echo $?
2

Bourne Shell(bash) 中有哪些特殊的变量?

 下面的表列出了 Bourne Shell 为命令行设置的特殊变量。

内建变量 解释
$0 命令行中的脚本名字
$1 第一个命令行参数
$2 第二个命令行参数
….. …….
$9 第九个命令行参数
$## 命令行参数的数量
$* 所有命令行参数,以空格隔开

如何取消变量或取消变量赋值?

unset 命令用于取消变量或取消变量赋值。语法如下所示:

## unset <变量名>

三、执行过程和原理

  1. 用户输入命令:用户在终端中输入命令,按下回车键。

  2. Shell读取命令:Shell读取并解析用户输入的命令,将其转换为可执行的格式。

  3. Shell查找命令:Shell根据输入的命令查找可执行程序的路径,并确定要执行的命令。

  4. Shell创建子进程:如果要执行的命令是可执行程序,则Shell会创建一个新的子进程来运行该程序。

  5. 子进程执行命令:Shell将子进程执行的命令传递给它,并等待子进程执行完毕。

  6. 子进程退出:子进程完成任务后,Shell将结果返回给用户,并退出子进程。

四、调试和前端集成

VS Code断点调试

VS Code是一款非常流行的跨平台代码编辑器,可以支持多种编程语言的调试,其中包括断点调试。下面是VS Code断点调试的基本步骤: 

 1. 在VS Code中打开你需要调试的源文件。

 2. 点击左侧窗口栏中的调试按钮。 

 3. 在左侧窗口中选择“添加配置”(Add Configuration)。 

 4. 选择需要调试的编程语言和运行环境,例如Python和Node.js。 

 5. VS Code会自动创建一个默认的调试配置文件,你可以在其中设置一些参数,例如启动程序的命令、传递给程序的参数等等。

 6. 设置好调试配置后,你可以在源代码中点击左侧行号旁边的空白区域来设置断点。 

 7. 启动调试器,在左侧窗口中选择对应的调试配置,点击“启动调试”或按F5键。

 8. 当程序执行到断点处时,调试器会停在该处,并且你可以通过调试器中的工具栏来查看变量值、控制程序执行等等。 

 9. 调试完成后,你可以选择继续执行或停止程序。 

 总之,VS Code 的断点调试功能非常强大,可以帮助你快速定位和解决代码中的问题。

五、总结

shell在Linux系统功能非常强大,同时学习到shell开发中运用,提高代码开发效率,前端的调试,我一般在浏览器进行代码断点,在课程中进行重新学习一些遗忘的知识点,更加深入学习VS Code 的断点调试功能