一、shell全局变量
提示:
1.在变量名前加 $,可以取得此变量的值,使用echo命令可以显示变量值,
$A 和 ${A} 的写法不同,但是功能是一样的。推荐使用后者的语法或
"${A}" 的用法。
2.${WEEk}day 若变量和其他字符组成新的变量就必须给变量加大括号{
}。
这样才能区分哪个是变量,那个是字符。
1. 变量类型
变量可分为两类:环境变量(全局变量)和局部变量。
环境变量也可称为全局变量,可以在创建他们的shell及其派生出来的任意子进程shell中使用。局部变量只能在创建他们的shell函数或脚本中使用。还有一些变量是用户创建的其它的则是专用shell变量。
2. 环境变量
环境变量用于定义shell的运行环境,保证shell命令的正确执行,shell通过环境变量来确定登陆用户名、命令路径、终端类型、登陆目录等,所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器、shell脚本和各类应用。
环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置/etc/profile文件或者/etc/profile.d/中定义。将环境变量放入profile文件中,每次用户登录时这些变量值都将被初始化。
传统上,所有环境变量均为大写。环境变量应用于用户进程前,必须用export命令导出
环境变量可用在创建他们的shell和从该shell派生的任意子shell或进程中。他们通常被称为全局变量以区别局部变量。通常,环境变量应该大写。环境变量是已经用export内置命令导出的变量。
有一些环境变量,比如HOME、PATH、SHELL、UID、USER等,在用户登录之前就已经被/bin/login程序设置好了,通常环境变量定义并保存在用户家目录下.bash_profile文件中。具体的环境变量说明请参考下表:bash环境变量
3. 自定义环境变量(全局变量)
设置环境变量
如果想设置环境变量,就要在给变量赋值之后或设置变量时使用export命令,带-x选项的declare内置命令也可完成同样的功能。(注意:输出变量时不要在变量名前面加$)
表 export命令和选项
格式:
export 变量名=value //第一种方法
变量名=value;export 变量名 //第二种方法。注意也可以一次导出多个变量名--> export 变量名 变量名 变量名
declare -x 变量名=value //第三种方法
提示:以上为三种设置环境变量的方法
例:
export NAME=oldboy
declare -x
自定义环境变量生产环境java环境配置实例:
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/opt/tomcat
export PATH=$PATH:$TOMCAT_HOME/bin
放在:/etc/profile 或者 /etc/profile.d/下
4. 显示与取消环境变量
4.1通过echo命令打印环境变量
[root@yanwei-test1 scripts]# echo $HOME #用户登录时进入的目录
/root
[root@yanwei-test1 scripts]# echo $UID #当前用户的UID(用户标识)相当于id -u
0
[root@yanwei-test1 scripts]# echo $PWD #当前工作目录的绝对路径名
/server/scripts
[root@yanwei-test1 scripts]# echo $SHELL #当前SHELL
/bin/bash
[root@yanwei-test1 scripts]# echo $USER
root
提示:在写shell脚本时可以直接使用上面的系统默认的环境变量
4.2 用env(printenv)或set显示默认的环境变量
[root@yanwei-test1 scripts]# env
TOMCAT_HOME=/opt/tomcat_8081
XDG_SESSION_ID=1277
HOSTNAME=yanwei-test1
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.0.157 49318 22
SSH_TTY=/dev/pts/0
USER=root
_=/usr/bin/env
OLDPWD=/root
提示:1.用set显示所有本地变量
2.我们也可以自定义全局环境变量,
4.3 用unset取消本地变量和环境变量
[root@yanwei-test1 scripts]# export aa=ll
[root@yanwei-test1 scripts]# echo $aa
ll
[root@yanwei-test1 scripts]# unset aa //只是临时生效,退出再登录就恢复了。
[root@yanwei-test1 scripts]# echo $aa
#此处为输出的空行了
二、shell局部变量
1. 定义本地变量
本地变量在用户当前的shell生产期的脚本中使用。例如,本地变量OLDBOY取值为ett098,这个值只在用户当前shell生存期中有意义。如果在shell中启动另一个进程或退出,本地变量OLDBOY值将无效。
1)普通字符串变量定义
变量名=value
变量名=‘value’
变量名=“value”
shell中变量名的要求:一般是字母,数字,下划线组成。字母要开头,字母大写
oldboy,oldboy123,oldboy_training
例子:下面的例子会输出什么结果。
a=192.168.1.2-$a
b='192.168.1.2-$a'
c="192.168.1.2-$a"
echo "a=$a"