shell-的变量

本文详细介绍了Shell中的全局变量、局部变量和特殊变量,包括环境变量的设置与导出、局部变量的定义、位置变量、进程状态变量的用法,以及变量的字符串操作技巧,是理解Shell脚本编程的重要参考资料。
摘要由CSDN通过智能技术生成

一、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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值