bash脚本编程之一 变量及变量类型

shell编程:
python

编译器,解释器shell

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


静态语言:编译型语言bash

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

    关键字:ide

    事先转换成可执行格式加密

    C、C++、JAVA、C#spa


动态语言:解释型语言,on the fly命令行

弱类型:边解释边执行,变量用时声明,甚至不区分类型:3d

PHPshellpythonperl


面向过程:  shellC

面向对象:JAVApythonperlC++


变量:

变量:内存空间的命名

内存:编址的存储单元

进程:一个程序运行会产生相关进程。


计算机数据的基本存储单位。 8bit()=1Byte(字节) 1024Byte(字节)=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB

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

一个字符占一个字节,一个汉字占两个字节



  字符:

  数值:

     整型

     浮点型:11.23/1.123*10^1/0.1123*10^2   

     2015/10/1064bit

     99999  24bit

 10(字符)2个字符  16bit

 10 (数值) 1010  4位  8bit  (一个字节8位)



整型,8bit256

0-255, 溢出

 

布尔型:真假型

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

1:真

0:假

异或:两个操做数相同为假,不一样为真


变量赋值:VAR_NAME=VALUE


bash变量类型:

环境变量

本地变量(局部变量)

位置变量

特殊变量


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

         export VARNAME=VALUE 

         VARNAME=VALUE

         export VARNAME

        “导出


本地变量:整个bash进程均可以使用

         set  VARNAME=VALUE  


局部变量:做用域为当前代码段

         local VARNAME=VALUE  


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

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

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


bash进程中定义变量

wKioL1Uy09awPAXMAABD7vsBy1I041.jpg

引用变量:${VARNAMW},有时候括号可省略。

 wKioL1Uy1MzRUdM6AABOe9ClnzI843.jpg


“”弱引用,变量可作替换的

‘’强引用,变量不可作替换的

   wKiom1Uy042hHD6iAAAxj-u9lUw837.jpg


位置变量:

  $1$2.....

 

特殊变量:

$? :上一个命令的执行状态返回值(正确或错误);


程序执行后,可能有两类返回值:

程序执行结果

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

    0  :正确执行

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

wKiom1Uy07bxhFGQAAB9csgbt4Q175.jpg


判断一个用户是否存在:

wKioL1Uy1TaSGED6AABNYXrEo1Q372.jpg


输出重定向:

 >

 >>

2>

2>>

&>

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

wKioL1Uy1W7g9nPGAAAl9y-qAt4117.jpg


查看当前shell中的变量:set

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


变量中追加变量(给字符串变量赋值)

wKiom1Uy1EOQZDWUAABFUZsi12c409.jpg


wKioL1Uy1Zvg07SuAABTeLr-9_4939.jpg


wKiom1Uy1EPSnSlqAABQKYFeNFI780.jpg


变量默认是字符型,不能作算术运算的

wKioL1Uy1g-T1_S9AAA0bFujzgI730.jpg


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

Linux内核只能识别ELF(可执行可连接)格式

wKioL1Uy1iijKhziAAArRPswtWY836.jpg


wKiom1Uy1NCzyZkHAAAifX4SNJg970.jpg

Linux内核是不能识别ASCII格式的,发现这不是可执行文件的时候得告诉内核这是一个脚本,让内核启动一个脚本解释器来执行它。

 

每一个脚本开头行都有一个魔数(shebang):

#/bin/bash   (#!开头,后面接着解释器路径)

wKioL1Uy1k-zfcZOAAAbayzOLJY860.jpg


要想要脚本独立执行脚本文件必须有执行权限

wKiom1Uy1Q7gmmtPAABmKR26rCk842.jpg


变量名称:

  1、只能包含字母、数字和下划线,而且不能数字开头

  2、不该该跟系统中已有的环境变量重名

  3、最好作到见名知意



练习:写一个脚本,完成如下任务

一、添加5个用户,user1.....user5

二、每一个用户的密码同用户名,并且要求,添加密码完成后不显示passwd命令的执行结果信息

三、每一个用户添加完成后,都要显示用户某某已经成功添加。

wKioL1Uy1nyx2zTuAABG0IUUl_c336.jpg

相关文章
相关标签/搜索