bash
提供了编程 环境:
程序:指令+数据
程序编程风格
过程式:以指令为中心,数据服务于指令; C语言,shell-script
对象式:以数据为中心,指令服务于数据; java语言
shell程序:提供了编程能力,解释执行;
程序的执行方式
计算机:只能运行二进制指令;
编程语言:
低级:汇编语言;
高级:C语言,JAVA语言,Python语言;
编译:高级语言→编译器→目标代码;类似于跨语种演讲,听众手里有稿子;
解释:高级语言→解释器→机器代码;类似于跨语种演讲,翻译人员同声传译(但是有一些区别:解释器会事先浏览一下整个代码文件,检查需要用到什么解释器解释“#!/bin/bash”);shell-script
过程式编程:
顺序执行:逐条执行;
选择执行:if-then;
循环执行:for,until,while;
shell编程:过程式,解释执行;
编程语言的基本结构:
数据存储:变量,数组;
表达式→语句;
shell编程不像C语言,Java语言有各自的库文件能够调用,shell-script只是调用系统中现有的命令来实现一些自动化功能,减轻维护人员日常的维护难度;
shell-script:遵循特定格式的 [ 具有可执行权限的 ] 文本文件
格式:文件第一行(顶格写)必须指定执行这个脚本的解释器的路径;
#!/bin/bash
脚本语言在运行时,事先会把解释器(解释器是可运行的二进制程序)加载到CPU中运行,然后由解释器读取脚本文件中的每一行的命令,翻译成其对应的可执行的二进制代码,最后由CPU执行;
编译成二进制格式之后,其文件开头包含一段标识其格式的代码,称为magic number(魔数);
例如Windows的exe格式的魔数和Linux的ElF格式的魔数就是不同的;
运行脚本:
给予执行权限,通过具体的文件路径指定文件执行;
直接运行解释器,将脚本作为解释器的参数运行;
变量: 命名的内存空间;
数据存储方式
数值:
整型
浮点型:进行高精度的计算时可能会有误差;
字符: ASCII(128)一个字符就可以包含;
变量类型
作用:
数据存储格式; 整型,浮点型,字符;
参与的运算; 算术运算,算术运算,增加、截取字符;
表示的数据范围;0-9,a-z;
编程程序语言
强类型:定义变量时必须指明类型,参与运算必须符合类型要求;
字符和数字相加,强类型就不支持;
弱类型:无需指明类型,默认为字符型,参与运算时会自动做隐式类型转换;
支持字符和数字相加,他会将其中一个转换成与另一个相同的类型;bash就是弱类型;
bash:
把所有要存储的数据统统当作字符处理;
不支持浮点数,但是可以借助工具实现;
逻辑运算
true,false→1,0;
与:有0则为假;&&
或:有1则为真;||
非:取反;!
异或:相同则为假,不同则为真;
短路运算
与:
第一个为0,则结果必为0;
第一个为1,则第二个必需要参与运算;
或:
第一个为1,则结果必为1;
第一个为0,则第二个必须要参与运算;
注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删