shell编程: 编译器,解释器

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

静态语言:变异型语言

    强类型(变量)

    事先转换成可以执行格式

    c、c++、JAVA、c#

动态语言:解释型语言,(on the fly)

    弱类型

    边解释边执行

    php、SHELL、Python、Perl


面向过程:shell、c

面向对象:JAVA、Python、Perl、c++


变量:内存空间,命名

内存:编址的存储单元


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

    字符型

    数值型

        整型

        浮点型


整型,8bit:保存256

0-255 溢出


逻辑:1+1>2

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

1:真

0:假

与:

1&0=0

0&1=0

0&0=0

1&1=1

非:

!真=假

!假=真


shell:弱类型编程语言

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

弱:变量用时声明,甚至不区分类型

bash变量类型:环境变量   本地变量(局部变量)  位置变量  特殊变量

本地变量:

 VARNAME=VALUE  作用域为整个 bash进程:

    引用变量:${变量名},括号有的时候可以省略

    [root@localhost ~]# name=jack

    [root@localhost ~]# echo $name

    

    jack

    [root@localhost ~]# animal=dog

    [root@localhost ~]# echo "there are some ${animal}s"

    there are some dogs


局部变量:

local VARNAME=VALUE:作用域为当前代码段:


环境变量:

作用域为当前shell进程及其子进程。

expore VANAME=VALUE

    "导出"

位置变量:

$1, $2,......


特殊变量:

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

    程序执行。肯能有了两类返回值;    

    1.程序执行结果

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

        0:正确执行

        1-255:错误执行 ,   1,2 ,127 系统预留

输出重定向:

> :覆盖重定向

>>:追加重定向

2>:错误重定向

2>>错误追加重定向

&>同时重定向


撤销变量:

unset vaname

查看当前shell中变量;

set

查看当前shell中的环境变量:

princev

env

export


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

shebang:魔数

#!/bin/bash

#:而後的#都是注釋行


脚本在执行时会启动一个子shell环境变量;


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



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

    

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

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