[青训营笔记|shell脚本编程]

61 阅读1分钟

1. shell基础:终端是获取用户输入,显示运算结果的硬件设备;tty是在linux中是输入输出环境;shell处理来自终端模拟器的输入,解释执行之后输出结果给终端;Bash是shell的一种具体体现;终端模拟器是关联虚拟tty的输入输出软件。Shell不仅提供了与内核和设备交互的方法,还集成了今天的一些软件开发中通用的设计模式。

2. 基础语法:自定义变量的作用域是当前shell,声明方式是=;环境变量的作用域是当前shell及其子shell,声明方式是export,declare -x;系统环境变量的作用域是所有shell,声明方式是启动加载。-p显示变量及其被声明的类型。引用的区别:双引号是部分引用,仅仅\、保留作用;单引号完全引用,原样输出;反引号执行命令;命令连接中;是cmd1和cmd2单独执行;后台运行是&:让命令在后台执行,可与nodup一起使用。管道符|是将前一个命令的结果传递给后面的命令;要求管道右侧的命令必须能接受标准输入才行,比如grep(查找错误日志和统计次数)命令,ls、mv等不能直接使用,可以适应xargs(参数处理)预处理;管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到的管道错误输出。Shell的判断命令有test,[,[[三种符号,可用于整数测试,字符串测试和文件测试。分支语句包括if condition语句和case变量in语句。循环包括while,until和for循环,until循环当条件成立是跳出循环。模块化原理是当前shell内执行函数文件:source[函数库的路径]。

3. 执行过程和原理:shell脚本一般以.sh结尾,也可以没有。Shell展开包含:大括号展开,波浪号展开,参数展开,命令替换,数学计算和文件名展开。

4. VScode配置支持断点和条件断点。