正则表达式:有两类,一: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`
转载于:https://blog.51cto.com/benniaoxianhui/1679198