一、扯淡模块
1、编译器,解释器:翻译官
2、变量:内存空间,命名
内存:编址的存储空间
3、编程能力:脚本编程
变量用时声明,甚至不区分类型
二、编程语言分类
1、静态语言:编译型语言
强类型(变量)
事先转换成可执行格式
c、c++、JAVA、c#
动态语言:解释性语言 on the fly
弱类型(通常)
边解析边执行
perl PHP Pythen shell
2、编程语言:
机器语言、汇编语言、高级语言
3、面向过程:shell c语言
面向对象:JAVA Pythen perl c++
三、bash变量类型
环境变量
本地变量(局部变量)
位置变量
特殊变量:保存特殊数据
本地变量
VARNAME=VALUE -- 整个bash进程
局部变量
local VARNAME=VALUE --- 作用域为当前代码段
引用变量:$NAME | ${NAME}
“”弱引用,进行变量替换
‘’强引用,不进行变量替换
环境变量:作用域为当前shell进程及其子进程
export VARNAME=VALUE
"导出"
位置变量
$1,$2...
特殊变量
$?:保存上一个命令的执行状态返回值
四、程序执行部分
1、程序执行,可能有两类返回值
程序执行结果
程序状态返回代码(0-255)
0---正确
其他错误
1、2、127系统预留
echo $?取状态的返回值
2、输出重定向
/dev/null:设备,软件设备(bit bucket)数据黑洞
3、撤销变量
unset VARNAME
4、查看变量
set
5、查看当前shell中的环境变量
printenv
env
export
@@
变量默认是字符串类型
五、脚本部分
1、脚本:命令的堆砌,按照实际需要,结合命令流程控制机制实现的源程序
shebang:魔数
#!/bin/bash
#注释行不执行
chmod +x first.sh 加上执行权限
bash first.sh 也可以执行(不改权限)
2、命令行脚本在执行时会启动一个子shell进程
命令行中启动的脚本汇集成当前shell环境变量
系统自动执行的脚本(非命令行启动),就需要自我定义需要各环境变量
3、bash中实现条件测试
类型
整数测试
字符测试
文件测试
整数比较
-eq 等值比较 --相等为真
[ $A -eq $B ]
-ne --不等为假
-gt 测试一个数是否大于另一个数:大于为真
-lt 测试一个数是否小于另一个数:小于为真
-ge 大于或等于
-le 小于或等于
命令之间的逻辑关系(遵循短路准则)
逻辑与 &&
逻辑或 ||
变量名称:只能包含字母,数字,下划线,并且不能数字开头