shell编程:

 

编译器,解释器

 

编程语言:机器语言、汇编语言、高级语言

 

高级语言

     静态语言:编译型语言,事先转换成可执行格式

         强类型(变量)

         关键字:

         CC++JAVAC#、、

     动态语言:解释型语言,(onthe fly)边解释边执行,运行(执行)时需要解释器

         弱类型

         ASPASP.NETPHPSHELLPYTHONPERL

         lua

shell,python,perl至少精通一种

 

面向过程:把编程着眼点或立足点主要在于问题解决过程  一般适用于小型编程

面向对象:把要实现的项目抽象为一个一个对象,并定义对像之间的动作或可发生的操作

         一般适用于大型编程

shell,c是纯面向过程

java,python是纯面向对象

perl,c++即是即面向过程,也面向对象,c++是非常复杂的面向对象的语言

 

 

编程能力:

脚本编程

 

 

 

变量:变量是内存空间;变量是命名的内存空间;

 

内存:编址的存储单元

 

进程:

 

 

 

 

 

变量类型:事先确定数据的存储格式和长度

字符

数值

    整型

    浮点型

时间型

布尔型

 

逻辑:1+1>2

 

逻辑运算:与、或、非、异或

1:真

0:假

与运算

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0

1 & 1 = 1

 

电路中的与运算:串联的两个开关为操作数,灯亮为真,灯灭为假

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0

1 | 1 = 1

 

电路中的或运算:并联的两个开关为操作数,灯亮为真,灯灭为假

 

!1=0

!0=1

 

电路中非运算:操作数为开关1,

当开关1闭合,磁电产生磁场,磁场将开关2断开,灯灭

当开关1断开,磁电不产生磁场,开关2自然闭合,灯亮

 

 

 

 

异或运算:两个操作数相同得0,两个操作数不同得1

程序中有三种演算子:XORxor

 

11=0

00=0

10=1

01=1

 

短路逻辑运算

与运算的短路逻辑:只要有一个为假,结果肯定为假

或运算的短路逻辑:只要有一个为真,结果肯定为真

 

shell 是弱类型编程语言

 

强:变量在使用前,必须事先声明,甚至还需要初始化;

空为null

弱:变量用时声明(意思是直接拿来用);甚至不区别类型;

 

显示转换

隐示转换

 

变量赋值:VAR_NAME=VALUE

 

BASH变量类型

     环境变量

     本地变量(局部变量)

     位置变量

     特殊变量(系统变量)

 

本地变量:

   

引用变量(替换变量):${VARNAME},通常情况下{}可以省略

 

 

 

 

 

 

 

‘’为强引用(替换):内部引用的变量不会被替换

“”为弱引用(替换):内部引用的变量会被替换

 

 

声明本地变量(作用域:整个BASH进程)

[set]  VARNAME=VALUE 

set可以省略

 

声明局部变量(作用域:当前代码段)

[set] local   VARNAME=VALUE

 

声明环境变量(作用域:当前SHELL进程及其子shell进程)

[set] export  VARNAME=VALUE

“导出”

 

位置变量:

$1,$2,…

 

特殊变量:

$?:保存上一个命令的执行状态返回值;

     程序执行结果

     程序状态返回代码(0-255)

        0:正确执行

        1-255:错误执行,1,2,127系统预留,其他的可以用户自行定义;

 

输出重定向:

>  覆盖重定向

>> 追加重定向

2> 错误重定向

2>> 错误追加重定向

&> 同时重定向

 

/dev/null:设备,软件模拟设备,bit bucket,数据黑洞

 

撤消变量

unset VARNAME

 

查看当前shell变量

set  包括环境变量和本地变量

 

查看当前shell中的环境变量

printenv

env

export

 

特殊变量和位置变量不能查看

 

 

 

脚本在执行时会启动一个子shell进程:

     命令行中启动的脚本会继承当前shell环境变量

     系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境变量

 

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序

 

shebang:魔数