首页 > 代码库 > shell编程(一)---变量

shell编程(一)---变量

变量是内存空间,通过变量名引用变量的时候,称为命名的内存空间。

定义一个变量,就是给变量分配一段编址的内存空间,给变量赋值,就是往内存空间里面填充数据。


变量类型:事先定义好数据的存储格式和长度。不同的数据类型所占用的存储空间和存储格式也不一样。

变量类型如:

字符类型。
数值类型。分为整型、浮点型
日期和时间型。
布尔型。


逻辑运算:与(and)、或(or)、非

and:&&    只要有一个为假,结果就为假。只有两者都为真,结果才为真。
or:||     只要有一个为真,结果就为真。只有两者都为假,结果才为假。
非:!


变量赋值方法:VAR_NAME=VAULE


BASH变量类型

注意:
1.脚本在执行时,会在当前shell下启动一个子shell进程。
2.命令行中启动的脚本会继承当前shell的环境变量。
3.系统自动启动的脚本(非命令行启动)就需要自我定义各种所需要的环境变量。

环境变量:声明环境变量的格式export VARNAME=VALUE作用域:当前shell进程及其子进程。

本地变量:声明本地变量的格式VARNAME=VALUE。作用域:对整个脚本进程或整个bash进程有效。

局部变量:声明局部链路的格式local VARNAME=VALUE。作用域:只对当前的代码段有效。

位置变量:$n,第n个位置变量,引用脚本中参数的位置的。如果n大于10,则要写成${n}

特殊变量:bash内置的变量。如$?,保存的是上一个命令的执行状态返回值(范围是0-255),如果是0,则表示正确执行,如果是非0,则表示执行失败。1,2,127为系统预留。其他值则可以用户自已定义。


引用变量:${var_name},如果不至于引起变量名混淆的,{}可以省略。

示例:

[root@Server3 ~]# ANIMAL=tiger
[root@Server3 ~]# echo "There is a $ANIMAL"
There is a tiger
[root@Server3 ~]# echo "There is a ${ANIMAL}"
There is a tiger
[root@Server3 ~]# echo "There are some $ANIMALs"
There are some 
[root@Server3 ~]# echo "There are some ${ANIMAL}s"
There are some tigers
[root@Server3 ~]#


环境变量:

示例

[root@Server3 ~]# NAME=frame
[root@Server3 ~]# export NAME
[root@Server3 ~]# echo $NAME
frame
[root@Server3 ~]# bash
[root@Server3 ~]# echo $NAME
frame
[root@Server3 ~]#
取消变量:unset 变量名


示例:

[root@Server3 ~]# echo $NAME
frame
[root@Server3 ~]# unset NAME
[root@Server3 ~]# echo $NAME
[root@Server3 ~]#
查看shell中的变量:(包括环境变量和本地变量)
set
查看当前shell中的环境变量:
printenv
env
export


增加变量的内容:

示例1:

[root@Server3 ~]# ANIMALS=pig
[root@Server3 ~]# echo $ANIMALS
pig
[root@Server3 ~]# ANIMALS=$ANIMALS:tiger
[root@Server3 ~]# echo $ANIMALS
pig:tiger
[root@Server3 ~]# ANIMALS=$ANIMALS:sheep
[root@Server3 ~]# echo $ANIMALS
pig:tiger:sheep
[root@Server3 ~]#


示例2:

[root@Server3 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@Server3 ~]# PATH=$PATH:/tmp
[root@Server3 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/tmp
[root@Server3 ~]# PATH=/home:$PATH
[root@Server3 ~]# echo $PATH
/home:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/tmp
[root@Server3 ~]# 

说明:PATH为变量名称,$PATH为引用PATH变量的内容。


变量定义规则:

1.不能和系统中的环境变量重名。

2.变量名只能包含字母、数字、下划线,且不能以数字开始。

3.最好做到见名知意。


本文出自 “HeZhang” 博客,请务必保留此出处http://hezhang.blog.51cto.com/1347601/1435278