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 脚本和编程 - 掘金