您的位置:首页 > 运维架构 > Shell

Linux运维+系统服务搭建(四)shell编程--bash基础

2016-10-19 22:57 218 查看
**shell编程:

编译器:解释器

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

编程能力:脚本编程

高级语言:

静态语言:编译型语言

强类型(变量)

关键字:被机器是别的控制指令

程序执行前先编译识别

eg:c/C++/java/c#

动态语言:解释型语言

弱类型

只有在执行的时候才需要转换

ASP/PHP/shell(面向过程)/javascript/python(面向对象)/perl(偏面向过程也有面向对象)/lua

面向对象:将具体抽象成对象

面向过程:问题解决过程本身

每一种语言都有他最适合的场景

变量类型;决定了变量存储的类型

字符

数值

整型

浮点型

2013/10/10—–假如存储字符8字节*8bit=64bit

—–假如存储数值2^24—–3*8=24bit

整型;8bit—256

0-255—–溢出

变量:内存空间、命名内存空间

内存:编址的存储单元

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

弱;变量用时声明、甚至不区分类型

开始bash:

bash变量类型:

环境变量:

本地变量(包含局部变量):

位置变量:

特殊变量(bash内置—系统变量):

本地变量:

VARNAME=VALUE:整个bash进程

局部变量:

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

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

export VARNAME=VALUE

bash:变量是进程的变量

随时用随时声明

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

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

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

**



开启个子bash,那么只对当前线程有效

引用变量:${NAME}花括号可以省略但是哟时候为了区分需要用,内部有变量想要替换只能使用双引号



位置变量:
$1/$2......shift:轮换-----shift 2轮换2个
特殊变量:

$?:上一个命令的执行状态返回值
$?退出状态执行码0-255
$#参数的个数
$*参数列表--将参数全都列出来
$@参数列表--将参数全都列出来
程序执行,可能有两类返回值:
程序执行结果:
程序状态返回代码(0-255)
0:正确执行
1-255错误返回不同信息  。。。1/2/127系统预留




输出重定向:
>
>>
2>
2>>
&>

/dev/null:软件设备,bit bucket--数据黑洞
那么我们会针对于数据黑洞不返回内容通过$?来确定命令执行内容

撤销变量(无论本地还是局部还是环境):
unset VARNAME----撤销变量--如果撤销变量值则使用unset   $VARNAME

查看当前shell中变量---特殊变量和位置变量无法查看
set用来查看变量
查看当前shell中环境变量:
printenv----
env----
export----设置




path中的路径追加原理如上

脚本:命令的堆砌,按照实际需要结合命令流程控制机制实现的源程序
shebang:魔数
#!/bin/bash------linux内核去读取根据shell脚本标示---出现在首行
#---注释符号




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: