Shell | 青训营笔记

88 阅读2分钟

Shell 1.终端(tty):获取用户输入,展示运算结果的硬件设备 Shell:处理来自终端模拟器的输入,解释执行之后输出结果给终端 Bash:Shell的一种具体实现

2.Shell构成:(1)解释器:Bash内置命令;GNU核心工具集;第三方库 (2)编程语言:变量(自定义变量,环境变量,系统环境变量); 运算(逻辑运算符,算数运算符); 语句(判断,分支,循环); 函数; 自定义变量:作用域为当前Shell,声明方式为“=”,规范:字符串,整型,浮点型,日期型; 环境变量:作用域为父子Shell,声明方式为“export、declare -x”; 系统环境变量:作用域为所有Shell,声明方式为“启动加载”;

3.当 变量名=变量值 时,等号左右不能有空格

4.declare +/- 选项 变量

  • 给变量设定类型属性 + 取消变量的类型属性

-a 将变量声明为数组类型

-i 将变量声明为整数型

-x 将变量声明为环境变量

-r 将变量声明为只读变量

-p 显示指定变量的被声明类型

5.系统环境变量 变量名 含义

$0 当前Shell名称/脚本名称

$# 传入脚本的参数数量

$* 传入脚本的所有参数

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

$PS1 命令提示符

$HOME 用户主文件夹

$PATH 全局命令的搜索路径

标题

6.双引号:部分引用,仅 $ ` / 保留作用;单引号:完全引用,原样输出;反引号:执行命令 (()):算数运算;():执行命令

7.管道:管道符| 的作用是将前一个命令的结果传递到后一个命令 要求:管道符右侧的命令必须能接受标准输入才行

8.重定向: >> 追加写入文件 > 覆盖写入文件 2> 错误输入写入文件 &> 正确和错误输入统一写入文件 << 到写入文件时停止

9.判断命令:test;【】;【【】】; 【】里面前后要有空格;【】和test 的>,<,=只能比较字符串,而【【】】可比较整型,在字符串中支持正则表达式 【】中的变量,用括号括起来;

10.分支:(1) if ----;then elif ----;then else ---- fi (2) case $变量 in: “第一个变量内容”) 程序段 ;; “第二个变量内容”) 程序段 ;; *) 程序段 ;; esac

11.循环:(1)while循环: while condition ;do 程序段;done (2)until循环:until condition;do 程序段;done (3)for循环:for var in 【word ...】;do 程序段;done

12.函数:(1)funcName(){echo“abc”;} (2)function funcName(){echo“abc”;} Shell自上而下执行,函数要在使用前定义好; 函数内return只表示函数执行状态,不表示执行结果,返回结果一般用echo,printf,在外面使用(),‘’获取结果;如果没有return,函数状态是上一条命令的执行状态,存储在(),‘’获取结果; 如果没有return,函数状态是上一条命令的执行状态,存储在?中;

13.模块化: source 【函数库路径】

14.执行:(1)Shell脚本一般以.sh结尾,第一行需要指定用什么命令解释器来执行 (2)启动方式(文件名;解释器;source.) 执行过程:(1)字符解析(行,命令,参数的分割) (2)Shell展开 (大括号,波浪号,参数,命令替换,数学计算,文件名) (3)重定向
(4)执行命令(内置命令直接执行,非内置命令通过SPATH查找)

15.调试脚本和前端集成 调试方法:(1)普通log (2)set命令 (3)vscode debug插件