1.编程语言的分类:机器语言,汇编语言,高级语言
高级语言:
静态语言:编译型语言 在程序执行之前就会编译成机器代码(完全转化完成)
强类型(变量)
关键字:在程序运行之前,先编译成机器代码
C\C++\JAVA\C# 都属于静态语言类
不需要任何解释器,自我就可以运行的程序
动态语言:解释型语言 在程序运行之后编译,使用一条编译一条代码
弱类型(通常)
边解释边执行
PHP\SHELL\python\perl
2.编程的分类:面向过程与面向对象
面向过程:shell,C
编程时,立足于解决问题的过程本身
更适合来发小型程序 Linux内核是面向过程的C语言开发的
面向对象:JAVA,Python,perl,C++
编程时,把要实现的任务看做是一个一个的对象,来编程,并且定义对象之间的动作,开发出的操作来完成的
适合开发大型程序
3.变量、内存与进程
变量:命名的内存空间
内存:编址存储单元
进程:命令的具体的执行过程
10:字符:需要16bit
10:数值:需要8bit(1010)
4.变量类型:事先确定好数据的存储格式和长度
字符型
数值型:整型,浮点型(带小数的eg:11.23,小数点之前作为一个单位存放,小数点之后作为一个单位存放,然后存储一下小数点的位置)
5.逻辑运算:与、或、非、异或
与:全真才为真,有假便为假
或:有真便为真,全假才为假
非:(单目运算符 !)对真取反为假,对假取反为真
异或:操作数相同则为假,操作数不同才为真
6.shell脚本编程:面向过程的
编译器:解释器
所有的脚本,都需要解释器,解释执行,解释器本身,基本上都是静态语言开发的
bash:运行bash 首先系统中有一个可以运行bash的编译器(脚本解释器)
shell:弱类型编程语言
强类型:变量在使用前,必须事先声明,甚至还需要初始化。
数值初始化为0,字符初始化也为空
NULL:空
弱类型:变量用时声明(随时用随时声明),甚至不区分类型(默认为字符串)
7.显式转换与隐式转换:
显式专换是你定义让这个值类型转换成你要用的值类型,例,你定义int i=5,想把他专换成char类就用显式转换(char)i。
隐式转换是系统跟据程序需要而自动转换的,不需要定义,但并不是所有值类型都可以互相转换,所以有了显式转换。例,int i=5; char j='a'; int n=i+j;因char可以隐式专换为int类型,所以结果n=102
8.变量赋值与撤销:
VAR_NAME=VALUE
unset VARNAME :只需要说明变量名就行,不需给此变量赋值
9.bash变量类型:
环境变量:作用域为当前shell进程及其子进程
export VARNAME=VALUE:变量先导出
VARNAME=VALUE export VARNAME :变量后导出
引用变量:${VARNAME}
下面没有表示可以引起变量名混淆的,就可以不用加{},否则就必须加{}.
echo+'':表示强制引用,echo+"":表示弱引用,可以替代里面的变量名。
本地变量(局部变量)
本地变量:
set(set往往省略) VARNAME=VALUE:作用域为整个bash进程
局部变量:
local VARNAME=VALUE:作用域为当前代码
位置变量:引用脚本的参数
$1,$2,$3……..
特殊变量(bash,为了保存某些特定的数值)
$?:保存上一个命令执行状态返回值(以后用的非常多)
10.脚本在执行时,会启动一个子shell进程:
环境变量对子shell是有效的
命令行中启动的脚本会集成当前shell的环境变量
系统自动执行的脚本(非命令行启动),需要自我定义需要的各环境变量
11.程序执行可能有两种返回值:$?
程序执行结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行
1,2,127:系统预留,有特殊的含义
12.输出重定向
/dev/null:设备模拟设备,bit bucket,数据黑洞
13.查看当前shell中的变量
set包括环境变量和本地变量
查看当前shell中的环境变量:
printenv
env
export
14.shebang:魔数
#!/bin/bash
脚本中#开头的行都是注释行,不执行
原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/35742
评论列表(1条)
总结的很好,可以适当的加上自己在练习过程中的问题,做到理论和实践统一哦。作业需要在后面附上