shell变量的作用:用来做存放系统和用户需要使用的特定参数(值)
怎么定义一个shell脚本内部的变量:
定义变量的基本格式:变量名=变量值
注意:
变量名只能以字母或者下划线开头,
等号两边没有空格,
变量名区分大小写,
变量名不能有特殊字符,
变量名不能以数字开头,
在变量面前添加前导符号$,可以引用一个变量的值。
$变量名:表示赋予变量的值。
例如:#export name=hzf ------------>定义一个变量,
#echo $name --------->将变量name的值输出到屏幕
hzf----------------------->输出的值
使用echo命令可以查看变量,可以在一条echo命令中同时查看多个变量值。
如果在已经赋过值的变量上再赋一次值,原先的值将会被覆盖,系统只会记录最近一次的赋值操作。
如果想在我们赋予的值中包含特殊符号,那么就需要引号把值包含在内(单双引号都可)。
例如:
#name=“h z f“
#echo $name
h z f
如果我们想在输出的变量后面同时输出其他内容,需要将我们定义的变量用大括号括起来,否则系统将认为他是一个新的变量名。
例如:
#name=hzf
#echo $name123
显示空值
#echo ${name}123
#hzf123
我们定义一个变量时,该变量只在当前bash环境中生效,如果我们再开一个子环境,变量名就会失效
eport变量名,将变量变为全局变量,系统重启才失效。
unset变量名,就是取消改变变量名的赋值,取消之后变为空值。
如果我们建立三个子bash,然后将name赋值为hzf,并定义为全局变量,然后再建立两个子bash,然后输出值为hzf,是因为在之前在前面的子bash环境中定义了全局变量,所以输出hzf,当我们将子bash多次退出后,发现name值为空,这是因为我们之前实在第四个bash中定义的全局变量,现在我们推出了四次,应该位于第二bash中,也就是说我们定义的全局变量bash环境已经被我们退出了,所以全局变量也就失效了。等于我们将定义了全局变量的子bash干掉了,现在位于被干掉的子bash的父进程中,所以在子进程中定义的所有的一切都不再生效。
如果shell我们想将一个变量让他不管怎样都能生效需要把他写入/etc/profile文件中。