【Linux Shell脚本编程】变量定义与使用

Tanglu Shell 2015-04-10 4563 0

Shell脚本编程在运维工作是必不可少的工具,使用它可以实现快速部署应用、定时执行任务等功能。在目前各个主流Linux发行版中将bash作为默认Shell,除了bash外还有sh、ksh等其它的Shell,只不过使用较少,所以通常说的Shell也是指bash


一、Shell变量的特点
· bash是一种弱类型编程语言,变量在定义时无需声明类型

· 变量的数据类型默认为字符串类型

· 变量可以由字母、数字和下划线组成,但是不能用数字开头,不能和已有变量重名,最好做到见名知意


二、Shell变量的定义

变量类型分为全局环境变量、本地局部变量、位置变量、特殊内置变量
1、全局(环境)变量:对当前shell及子shell均生效。系统在开机时加载的/etc/profile文件就会去读取环境变量,将自定义的环境变量写在该文件中可以实现让所有用户都加载该环境变量的效果

# 定义全局变量
# 方法1
export var1=test1 
# 方法2
var2=test2
export var2


2、局部变量:仅对当前shell生效,对子shell无效。一般写在函数中,调用函数时生效,在函数外引用没有效果

website=linuxe.cn


3、位置变量:常用于脚本参数传递,如"$1"代表执行脚本时第一个参数,$1,$2...${10}


4、特殊变量:系统用于保存一些特殊数据

$0:返回当前脚本名
$*:返回执行脚本时所有的参数,但是这里的多个参数会是一个整体
$@:返回执行脚本时所有的参数,但是会把每一个参数当作独立的个体进行收集,可以用来循环
$#:返回执行脚本时所有参数的个数,可用于判断用户是否加参数
$$:当前进程的PID
$!:上一个进程的PID
$?:上一个命令的返回值,0代表执行正确,1-255都是代表有错误


三、变量的使用
用${varname}的方式可以引用变量的值,花括号虽然可以省略,但是为了避免变量名称混淆最好加上花括号或者双引号,尤其当变量内容是字符串时最好加双引号避免莫名其妙的错误

#以下三个命令通常是等价的
echo $var1
echo ${var1}
echo "$var1"


四、修改变量的值

VARNAME=$VARNAME:new
echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PATH=$PATH:/root    #给PATH变量增加一个目录
echo $PATH    #输出可以看到已经多了/root目录      
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root


五、变量的查看与删除
· 通过set命令可以查看当前shell中所有变量(环境变量 + 本地变量)
· 通过env或export命令查看当前shell中的环境变量

· 通过source命令调用脚本后,会在当前环境加载脚本重的变量并保留,使用bash则不会保留

· export命令:显示和设置环境变量

· 通过unset命令取消变量

unset  VARNAME,撤销变量时不用加$符号
unset name    #取消变量
echo $name    #打印测试为空


评论