这是我参与【第六届青训营】笔记创作活动的第3天~学习的内容是【Shell脚本和编程】。
在计算机科学中,Shell俗称“壳”(区别于核),是指“为使用者提供操作界面”的软件,它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收命令,然后调用相应的应用程序。
学习Shell的价值如下:
本次课程分为Shell基本概念、命令和语法、执行过程和原理、调试和前端集成共4部分。
1 Shell基本概念
1.1 概念
物理终端➡️软件终端➡️终端模拟器➡️shell 和前面叙述的类似,Shell负责处理来自终端模拟器的输入,解释执行之后输出结果给终端。
1.2 发展
1.3 构成
Shell不仅提供了与内核和设备交互的方法,还集成了一些今天软件开发中通用的设计模式,具备控制流程,循环,变量,命令查找的机制。Shell既是命令解释器,也是一门编程语言,作为命令解释器,它提供给用户接口,使用丰富的GUN工具集,第三方的或者内置的,比如cd、pwd、exec、test、netstat等。
2 语法和命令
2.1 变量
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 系统环境变量
2.4 判断命令
2.5 常用命令
3 执行过程和原理
Shell脚本一般默认以.sh结尾,也可以没用,这是一个约定:第一行需要指定用什么命令解释器来执行。
#! /bin/bash
#! /usr/bin/env bash
启动方式如下:
# 文件名运行
./filename.sh
#解释器运行
bash ./filename.sh
# source 运行
source ./filename.sh
执行过程如下:
首先是字符解析,然后是Shell展开,重定向,执行命令,最后是收集状态并返回。
Shell展开的几种形式如下:
4 调试和前端集成
4.1 调试
1.普通log,使用echo、printf;
2.使用set命令
3.VScode debug插件
4.2 前端集成
1.node中通过对exec、spawn调用shell命令;
2.shell脚本中调用node命令
3.借助zx等库进行javascript、shell script的融合
5 个人总结
通过本次学习,我了解了Shell的配置加载、执行方式、命令解释过程等等,对Shell脚本的编写方法和各种功能的实现方法和shell脚本的实现方式有了简单的了解。毕竟shell的很多指令自己还是第一次接触,所以在今后的训练中要多加练习,起码要对常用的指令烂熟于心。