shell命令之---使用Linux环境变量
设置局部用户定义变量
所有的环境变量名均使用大写字母,这是bash shell的标准惯例。如果是你自己创建的局部变量或是shell脚本,请使用小写字母。变量名区分大小写。在涉及用户定义的局部变量时坚持使用小写字母,这能够避免重新定义系统环境变量可能带来的灾难。
变量名、等号和值之间没有空格,这一点非常重要。如果在赋值表达式中加上了空格,bash shell就会把值当成一个单独的命令:
$ my_variable = "Hello World"
-bash: my_variable: command not found
设置全局环境变量
可以使用export设置全局环境变量
删除环境变量
删除环境变量可以使用unset
环境变量持久化
对全局环境变量来说(Linux系统中所有用户都需要使用的变量),可能更倾向于将新的或修改过的变量设置放在/etc/profile文件中,但这可不是什么好主意。如果你升级了所用的发行版,这个文件也会跟着更新,那你所有定制过的变量设置可就都没有了。
最好是在/etc/profile.d目录中创建一个以.sh结尾的文件。把所有新的或修改过的全局环境变量设置放在这个文件中。
数组变量
环境变量有一个很酷的特性就是,它们可作为数组使用。数组是能够存储多个值的变量。这些值可以单独引用,也可以作为整个数组来引用。
要给某个环境变量设置多个值,可以把值放在括号里,值与值之间用空格分隔。
$ mytest=(one two three four five)
没什么特别的地方。如果你想把数组像普通的环境变量那样显示,你会失望的。
$ echo $mytest
one
只有数组的第一个值显示出来了。要引用一个单独的数组元素,就必须用代表它在数组中位置的数值索引值。索引值要用方括号括起来。
$ echo ${mytest[2]}
three
要显示整个数组变量,可用星号作为通配符放在索引值的位置。
$ echo ${mytest[*]}
one two three four five
甚至能用unset命令删除数组中的某个值,但是要小心,这可能会有点复杂。看下面的例子。
$ unset mytest[2]
$
$ echo ${mytest[*]}
one two four five
$
$ echo ${mytest[2]}
$ echo ${mytest[3]}
four
$
这个例子用unset命令删除在索引值为2的位置上的值。显示整个数组时,看起来像是索引
里面已经没这个索引了。但当专门显示索引值为2的位置上的值时,就能看到这个位置是空的。
最后,可以在unset命令后跟上数组名来删除整个数组。
$ unset mytest
$
$ echo ${mytest[*]}
$
有时数组变量会让事情很麻烦,所以在shell脚本编程时并不常用。对其他shell而言,数组变
量的可移植性并不好,如果需要在不同的shell环境下从事大量的脚本编写工作,这会带来很多不
便。有些bash系统环境变量使用了数组(比如BASH_VERSINFO),但总体上不会太频繁用到。