【3】shell 脚本和编程 | 青训营笔记

64 阅读2分钟

1.Shell基础概念

概念

  • 终端:获取用户输入、展示运算结果的硬件设备
  • tty:teletypeWriter的简称,和终端等价,早期是电传打印机,在Linux是输入输出环境
  • 终端模拟器:Mac Terminal、iTerm2等,关联虚拟tty的输入输出软件
  • Shell:command interpreter,处理来自终端模拟器的输入,解释执行之后输出结果给终端
  • Bash:Shell的一种具体体现

注:物理终端=>软件终端tty=>终端模拟器=>shell

构成

1.png

2.png

2.命令和语法

变量

类型作用域声明方式规范
自定义变量当前shell=字符串、整型、浮点型、日期型
环境变量当前shell及其子shellexport、declare -x
系统环境变量所有shell启动加载

01.png

自定义变量

#!/bin/bash
#变量名=变量值(等号左右不能有空格)
page_size=1
page_num=2
#将命令赋值给变量
_ls=ls
#将命令结果赋值给变量
file_list=$(ls -a)
#声明变量为整型
let total=page_size*page_num
declare -i total=page_size*page_num
#导出环境变量
export total
declare -x total

declare [+/-] 选项 变量

选项含义
-给变量设定类型属性
+取消变量的类型属性
-a将变量声明为数组类型
-i将变量声明为整型
-x将变量声明为环境变量
-r将变量声明为只读变量
-p显示指定变量的被声明的类型

系统环境变量

02.png

配置文件加载

03.png

运算符和引用

03.png

管道

为什么会出现“管道”呢?

如果需要互通,比如第一个命令的返回传递给第二个命令,就需要用到管道了,管道的本质是将多个程序进行了一个连接,和信号一样,也是进程通信的方式之一。

  • 管道与管道符 | ,作用是将前一个命令的结果传递给后面的命令
  • 语法:cmd1 | cmd2
  • 要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理
  • 注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出
#!/bin/bash
cat platform.access.log | grep ERROR
netstat -an | grep ESTABLISHED | wc -l
find . -maxdepth 1 -name "*.sh" | xargs ls -l

3.执行过程和原理

4.调试和前端集成