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

116 阅读2分钟

这是我参与【第六届青训营】笔记创作活动的第3天~学习的内容是【Shell脚本和编程】。

在计算机科学中,Shell俗称“壳”(区别于核),是指“为使用者提供操作界面”的软件,它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收命令,然后调用相应的应用程序。

学习Shell的价值如下:

截屏2023-05-12 下午9.20.13.png

本次课程分为Shell基本概念、命令和语法、执行过程和原理、调试和前端集成共4部分。

1 Shell基本概念

1.1 概念

截屏2023-05-12 下午9.24.26.png

物理终端➡️软件终端➡️终端模拟器➡️shell 和前面叙述的类似,Shell负责处理来自终端模拟器的输入,解释执行之后输出结果给终端。

1.2 发展

截屏2023-05-12 下午9.29.14.png

1.3 构成

截屏2023-05-12 下午9.34.36.png

Shell不仅提供了与内核和设备交互的方法,还集成了一些今天软件开发中通用的设计模式,具备控制流程,循环,变量,命令查找的机制。Shell既是命令解释器,也是一门编程语言,作为命令解释器,它提供给用户接口,使用丰富的GUN工具集,第三方的或者内置的,比如cd、pwd、exec、test、netstat等。

2 语法和命令

2.1 变量

截屏2023-05-12 下午9.39.16.png

2.2 自定义变量

#!/bin/bash

#变量名=变量值(等号左右不能有空格)
page_size=1
page_num=2

#将命令复制给变量
_ls=ls

#将命令结果赋值给变量
file_list=$(ls -a)

#默认字符串,不会进行 + 运算
total=page_size*page_num

#声明变量为整型
let total=page_size*page_num

declare -i total=page_size*page_num

#导出环境变量
export total

declare -x total

2.3 系统环境变量

截屏2023-05-12 下午9.43.57.png

2.4 判断命令

截屏2023-05-12 下午9.44.53.png

2.5 常用命令

截屏2023-05-12 下午9.46.17.png

3 执行过程和原理

Shell脚本一般默认以.sh结尾,也可以没用,这是一个约定:第一行需要指定用什么命令解释器来执行。

#! /bin/bash
#! /usr/bin/env bash

启动方式如下:

# 文件名运行
./filename.sh


#解释器运行
bash ./filename.sh


# source 运行
source ./filename.sh

执行过程如下:

截屏2023-05-12 下午10.28.11.png

首先是字符解析,然后是Shell展开,重定向,执行命令,最后是收集状态并返回。

Shell展开的几种形式如下:

截屏2023-05-12 下午10.29.47.png

4 调试和前端集成

4.1 调试

1.普通log,使用echo、printf;
2.使用set命令

截屏2023-05-12 下午10.31.57.png 3.VScode debug插件

4.2 前端集成

1.node中通过对exec、spawn调用shell命令;
2.shell脚本中调用node命令 3.借助zx等库进行javascript、shell script的融合

5 个人总结

通过本次学习,我了解了Shell的配置加载、执行方式、命令解释过程等等,对Shell脚本的编写方法和各种功能的实现方法和shell脚本的实现方式有了简单的了解。毕竟shell的很多指令自己还是第一次接触,所以在今后的训练中要多加练习,起码要对常用的指令烂熟于心。