什么是变量
变量一个可以变化的量,比如字母a,可以表示3这个数字,对它进行一些操作之后,它可以变成其他的数字:
[root@localhost ~]# a=3
[root@localhost ~]# echo $a
3
[root@localhost ~]# b=4
[root@localhost ~]# echo $b
4
[root@localhost ~]# a=$(($a+$b))
[root@localhost ~]# echo $a
7
上例中,同样是字母a,最开始表示的是3,最后变成了7,而且它还可以继续的变下去。
变量的命名
以数字、字母、下划线组成,不能以数字开头。
正确的变量:a_b,ab,_aa,a9。
错误的变量:9a。
[root@localhost ~]# 9a=4
-bash: 9a=4: 未找到命令
变量的加减乘除以及相连
加:$((a+b))。
[root@localhost ~]# a=3
[root@localhost ~]# b=4
[root@localhost ~]# $((a*b))
-bash: 12: 未找到命令
[root@localhost ~]# c=$((a+b))
减、乘、除和加一样,不再上代码。
减:$((a-b))。
乘:$((a*b))。
除:$((a/b))。
连接:ab。
[root@localhost ~]# echo $a$b
34
连接变量和非变量需要用引号隔开一下:
[root@localhost ~]# echo $a$b'c'
34c
全局变量与局部变量
局部变量
局部变量的特点是在当前shell中才生效,子shell中不生效。
可能有的同学不清楚什么叫子shell。子shell就是在当前shell中再开一个shell。使用bash命令就可以进入到子shell。
使用exit命令退出子shell,我们再用pstree命令看一下。
pstree是查看进程树的命令
弄明白子shell的概念,我们就可以来做一下实验了。
我们在当前shell中定义变量b=3,然后分别在当前shell和子shell中看能不能找到它。
[root@localhost shellScripts]# b=4
[root@localhost shellScripts]# echo $b
4
[root@localhost shellScripts]# bash
[root@localhost shellScripts]# echo $b
#没有输出
实验结果和我们的理解是一致的。
全局变量
全局变量就是在当前shell和子shell中都可见的变量。使用export命令可以把局部变量变成全局变量,就像这样:
export a=3
网上有很多观点认为全局变量就是环境变量,我觉得这个理解是有问题的。
因为环境变量是不区分终端的,而全局变量是区分终端的。最简单的证明就是,如果我们在a终端中使用export定义一个全局变量,在终端b中是找不到的。
a终端下,当前shell和子shell都可见:
[root@localhost shellScripts]# export c=5
[root@localhost shellScripts]# echo $c
5
[root@localhost shellScripts]# bash
[root@localhost shellScripts]# echo $c
5
b终端下不可见:
[root@localhost ~]# echo $c
#没有输出
你可能现在还疑惑到底环境变量是什么?我简单点讲,就是系统启动时或者你进入shell时,系统给你准备的一些环境,比如你的家目录是哪里、你的历史列表有多长,你的主机名是什么等等。
转载请注明:IT运维空间 » linux » Linux Shell中的变量详解
发表评论