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

37 阅读2分钟

Shell脚本和编程

shell 是一种脚本语言
脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)

shell的价值:

1.Linux服务器的基本操作和管理

2.前端Node.js服务的进程管理、问题排查、资源监控等运维操作

3.使用shell编写TCE,SCM,Docker脚本,完成服务编写和部署

一、Shell基础概念

1、终端:获取用户输入、展现运算结果的硬件设备

2、tty:teletypeWriter的简称,和终端等价,早期指电传打印机,在Linux中是输入/输出 环境

3、终端模拟器:Mac Terminal、iTerm2等,关联虚拟tty的输入输出软件

4、Shell:command interpreter,处理来自终端模拟器的输入,解释执行之后输出结果给终端

5、Bash:shell的一种具体实现

构成:

解释器:bash内置命令、GNU核心工具集、第三方库

编程语言:变量、运算、语句、函数

二、命令和语法

变量:自定义变量、环境变量、系统环境变量

系统环境变量:

$0:当前shell名称/脚本名称

$#:传入脚本的参数数量

$*:传入脚本的所有参数

$?:上条命令执行的状态码

$PS1:命令提示符

$HOME:用户主文件夹

$PATH:全局命令的搜索路径

重定向:

输出重定向符号:

>:覆盖写入文件
>>:追加写入文件
2>错误输出写入文件
$>正确和错误输出统一写入到文件中

输入重定向符号:

<

<<

判断命令:

test、[ 、[[

注:

·中括号前后有空格符

·[和test是命令,只能使用自己支持的标志符,<,>,=只能用来比较字符串

·中括号内的变量,最好都用引号括起来

·[[更丰富,在整形比较中支持<,>,=,在字符串比较中支持=~正则

分支语句:if-else;case

循环:while,until,for

函数:

funcName(){echo "abc";}

function funcName(){echo "abc";}

模块化: 原理是当前shell内执行函数文件,方式:source[函数库的路径]

三、执行过程和原理

执行:.sh结尾

启动方式:

1、文件名运行:./filename.sh

2、解释器运行: bash./filename.sh

3、source运行:source./filename.sh

执行过程:

1、字符解析

2、shell展开

3、重定向

4、执行命令

5、收集状态并返回

四、调试和前端集成

调试:

1、普通log,使用echo、printf

2、使用set命令

3、vscode debug插件

前端集成:

1、node中通过exec、spawn调用shell命令

2、shell脚本中调用node命令

3、借助zx等库进行JavaScript、shellscript的融合

标题:Shell 脚本和编程 - 掘金

网址:juejin.cn/course/byte…