分类: LINUX
2013-12-20 12:51:47
一、环境变量和shell变量
/etc/profile
$HOME.profile
二、环境和shell变量
1、 本地变量
本地变量在用户现在的s h e l l生命期的脚本中使用。优点就是用户不能对其他的s h e l l或进程设置此变量有效。设置一本地变量,格式为:
$ variable-name=valu或e $ { v a r i a b l e - n a m e = v a l u e }
注意,等号两边可以有空格。如果取值包含空格,必须用双引号括起来。
Va r i a b l e - n a m e = v a l u e 设置实际值到v a r i a b l e - n a m e
Va r i a b l e - n a m e + v a l u e 如果设置了v a r i a b l e - n a m e,则重设其值
Va r i a b l e - n a m e : ? v a l u e 如果未设置v a r i a b l e - n a m e,显示未定义用户错误信息
Va r i a b l e - n a m e ? v a l u e 如果未设置v a r i a b l e - n a m e,显示系统错误信息
Va r i a b l e - n a m e : = v a l u e 如果未设置v a r i a b l e - n a m e,设置其值
Va r i a b l e - n a m e : - v a l u e 同上但是取值并不设置到v a r i a b l e - n a m e,可以被替换
显示变量
使用e c h o命令可以显示单个变量取值,并在变量名前加$。e.g. echo ${ERROR_MSG}
清除变量
使用u n s e t命令清除变量。unset variable-name
显示所有本地shell变量
使用s e t命令显示所有本地定义的s h e l l变量。
测试变量是否已经设置
$ { v a r i a b l e : - v a l u e } 意即如果设置了变量值,则使用它,如果未设置,则取新值。
设置只读变量
v a r i a b l e - n a m e = v a l u e
readonly variable-name
2、 环境变量
环境变量用于所有用户进程(经常称为子进程)。环境变量可以在命令行中设置,但用户注销时这些值将丢失,因此最好在. p r o f i l e文件中定义。
设置环境变量:V A R I A B L E - N A M E = v a l u e;export VARIABLE-NAME
使用e n v命令可以查看所有的环境变量。
3、 位置变量参数
$0 $1 $2 … 其中,$0表示脚本名,$1表示第一个参数,依次类推。此数目可以任意多,但只有前9个可以被访问,使用s h i f t命令可以改变这个限制。
$ # 传递到脚本的参数个数
$ * 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$ $ 脚本运行的当前进程I D号
$ ! 后台运行的最后一个进程的进程I D号
$ @ 与$ #相同,但是使用时加引号,并在引号中返回每个参数
$ - 显示s h e l l使用的当前选项,与s e t命令功能相同
$ ? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
注:$ ?返回0。可以在任何命令或脚本中返回此变量以获得返回信息。基于此信息,可以在脚本中做更进一步的研究,返回0意味着成功,1为出现错误。
三、引号
1、 双引号
使用双引号可引用除字符$、`、\外的任意字符或字符串。如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。
2、 单引号
单引号与双引号类似,不同的是s h e l l会忽略任何引用值。换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串。
3、 反引号
反引号用于设置系统命令的输出到变量。s h e l l将反引号中的内容作为一个系统命令,并执行其内容。
4、 反斜线 \
如果下一个字符有特殊含义,反斜线防止s h e l l误解其含义,即屏蔽其特殊含义。下述字符包含有特殊意义: & * + ^ $ ` " | ?。