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,在外面使用?中;
13.模块化: source 【函数库路径】
14.执行:(1)Shell脚本一般以.sh结尾,第一行需要指定用什么命令解释器来执行
(2)启动方式(文件名;解释器;source.)
执行过程:(1)字符解析(行,命令,参数的分割)
(2)Shell展开 (大括号,波浪号,参数,命令替换,数学计算,文件名)
(3)重定向
(4)执行命令(内置命令直接执行,非内置命令通过SPATH查找)
15.调试脚本和前端集成 调试方法:(1)普通log (2)set命令 (3)vscode debug插件