linux基础 --- shell编程

 shell编程:

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


静态语言 :编译型语言

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

事先转换成可执行格式

C、C++、JAVA、C#

动态语言:解释型语言       on the fly

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

边解释边执行

PHP、SHELL、python、perl

面向过程:Shell   C

面向对象:JAVA,Python,perl,C++

变量:内存空间,命名

内存:编址的存储单元

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


bash变量类型:

环境变量

本地变量(局部变量)

位置变量

特殊变量


变量名称:只能包含字母、数字和下划线,并且不能以数字开头,不应该跟系统中的已有的环境变量重名

本地变量:

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

局部变量:

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

环境变量:作用域为当前shell进程及其子进程

export  VARNAME=VAULE         “导出”

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

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

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


引用变量:${varName},括号在不引起变量名混淆的时候可以省略。

双引号和单引号的区别:单引号标识强引用,字符串中的变量不会被替换   双引号为弱引用,变量会被替换

位置变量:  $1 ,$2 ,$3  ...

特殊变量:

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

程序执行,有两个返回值:程序执行结果       程序状态返回代码(0-255)    0:正确执行   1-255:返回各种错误状态   1,2,127系统预留

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



撤销变量: unset VARNAME   


查看当前shell中的所有变量: set


查看当前shell中的环境变量:printenv或者env 或者 export 

shell中变量的值都为字符串型


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


脚本语法:shebang:    魔数


#!/bin/bash         第一行必须是这句,代表这个文件是脚本文件,可以被内核识别并解析执行

#注释行,不执行


条件判断

bash中如何实现条件判断?

条件测试类型:

整数测试

字符测试

文件测试

条件测试的表达式:

  [ expression ]    注意中括号和表达式中间要加空格

[[ ecpression ]]

test expression

整数比较(双目操作): 

-eq:测试两个整数是否相等:比如 $A -eq $B

-ne:测试两个整数是否不等;不等,为真;相等,为假

-gt :测试一个数是否大于另一个数:

-lt  :测试一个数是否小于另一个数

-ge:大于或等于

-le :小于或等于

命令间的逻辑关系:

逻辑与:&&

逻辑或:||

逻辑非:!


条件判断,控制结构

单分支if语句

if  判断条件;then

statement1

statement2

...

fi


双分支的if语句

if 判断条件;then

statement1

statement2

...

else

statement3

statement4

...

fi


用反引号包起来的命令得到的是命令的执行结果 ,直接写命令,在if语句中使用的是命令的执行结果

你可能感兴趣的:(linux)