- 正则表达式:有两类,一:basic regexp 二:extended(扩展正则表达式) 他们的部分元字符不一样,意义也不相同
- grep:使用基本正则表达式或定义的模式中过滤文本的命令,-E;使用扩展正则表达式 -A 数字:不仅显示匹配到的行,还显示后面几行 -B 数字:不仅显示匹配到的行,还显示前几行 -C 数字:不仅显示匹配到的行,还显示前后个几行
- 扩展正则表达式:
- 其中 . [] [^] * ^ $ \< \>与grep是相同的, ? 与 \?:意思相同,可以不写\ +:其前字符至少出现一次 {m,n} ():不使用\ 括号内表示一个整体 |:或者的意思 (注:grep -E = egrep 扩展表达式,fgrep:不支持正则表达式)
- shell 编程 :脚本编程
- 编程语言:机器语言(0 1代码) 汇编语言 高级语言
- 静态语言:c c++ java c# 编译型语言,在执行前必须完全转化完成才可执行,强类型语言(变量在使用前必须先声明格式,甚至还要初始化)
- 动态语言:php python shell perl 解程型语言,边转化边执行,弱类型语言(变量用时不需要区分类型,默认为字符串)
- 面向过程:解决问题的过程本身(shell c)
- 面向对象:把要实现的一个项目抽象成一个对象,并定义对象之间的动作,操作(java python perl c++)
- 内存:编址的储存单元
- 变量:内存空间,(变量赋值:变量名=值)
- 变量命名要求:
- 1.只能包含字母,数字和下划线并且不能数字开头
- 2.不应该跟系统中已有的环境变量重名
- 3.最好做到见名见意的效果
- 变量类型:储存数据的格式,整型,浮点型,布尔型(真假) 要事先确定数据的存储格式和长度
- 逻辑运算:与 或 非 异或
- 与:1 0 = 0 0 1 = 0 1 1 = 1 0 0 = 0 (相当与电路中的与门电路)
- 或:1 0 = 1 0 1 = 1 1 1 = 1 0 0 = 0 (相当与电路中的非门电路)
- 非:!(0) = 1 !(1) = 0 (单目运算符)
- 异或:1 0 = 1 0 1 = 1 1 1 =0 0 0 = 0 (相同为假,不同为真)
- 短路逻辑:短路与:当第一个条件为假时,就跳过第二条件表达式,不执行。 短路或:当第一个条件为真时,跳过第二个条件表达式,不执行。
- bash 变量类型:环境变量 本定变量(局部变量,反则不对) 位置变量 特殊变量(系统变量)
- 引用变量:${VARNAME} 括号可省略 echo “ .....${VARNAME}....”(要引用变量时用双引号,不引用时用单引号)
- 本地:VARNAME=VALUE 作用域:整个bash进程引用
- 局部:local VARNAME=VALUE 作用域:只对当前代码段有用
- 环境变量:作用域:当前shell进程及其子进程,export VARNAME=VALUE 也可以 VARNAME=VALUE export VALUE
- 脚本在执行时会启动一个子shell进程,命令行中启动的脚本会继承当前shell环境变量,系统自动执行的脚本(非命令行启动)就需要自我定义需要的环境变量
- 位置变量:$1 $2 $3....
- 特殊变量:$? 上一个命令执行状态返回值(echo $?) (注:程序执行可能有两类返回值执行状态返回代码 0-255 0:为执行正确的返回值 1 2 127 :为系统预留,其它都是执行错误的返回值)
- /dev/null:软件设备(模拟) bit backet
- 撤销变量:unset VARNAME ($VARNAME撤销变量中的值)(脚本结束后脚本中的变量也会撤销)
- 查看当前shell中的变量:set (所有变量)
- 查看当前shell中的环境变量:printenv,env,export
- 向已有的变量添加变量:ANIMALS=VARNAME (ANIMALS=$ANIMALS:VARNAME) (export PATH=....:$PATH)也可以添加到前面(PATH=$PATH:....)
- 脚本:命令的堆砌,按实际需要结合命令流程控制机制实现的源程序
- shebang:魔数 #!/bin/bash
- 脚本执行:
- 1.把执行的路径加入PATH
- 2.直接加入路径执行
- 3.解释器加文件名
- bash中如何实现条件判断:
- 判断类型:1.整数判断 2.字符串判断 3.文件判断(文件是否存在)
- 判断表达式:
- 1.[ expression ]
- 2.[[expression]]
- 3.test expression
- bash命令间的逻辑关系:
- 逻辑与:&&
- 逻辑或:||
- (都符合短路逻辑)
- 整数比较(多目):
- -eq:判断两个整数是否相等($A -eq $B) -ne:判断两个整数是不等的 -gt:判断一个数大于另一个数 -lt:判断一个数是否小于另一个数 -qe:大于或等于 -le:小于或等于
- 条件判断,控制结构
- 单分支的if语句:
- if 判断条件; then
- statement1
- statement2....
- fi
- 双分支的if语句:
- if 判断条件; then
- statement1
- statement2....
- else
- statement1
- fi
- shell中的算术运算:
- 1.let $c=$A+$B
- 2.$[ ]:C=$[$A+$B]
- 3.$(( )):C=$(($A+$B))
- 4.expr 运算表达式中各个操作数及运算符要有空格而且要是用命令引用:C=`expr $A + $B`
时间: 2024-10-25 11:02:04