10.3.1 用户自定义变量
Shell变量不需要专门的说明语句,通过赋值语句即可完成变量的说明及赋值。
(1)变量赋值
在shell中,赋值语句的语法格式如下所示:
name=string
其中name为变量名,string是赋给变量的字符串值,而符号“=”则为赋值号,例如:
$myname=zheng
$count=10
注意,在赋值语句中,赋值号的两边不允许有空格符。
(2)变量引用
变量赋值后,用户通过在变量名前加符号$来引用该变量,例如,为引用变量myname,应该使用$myname形式。变量引用的结果是使用变量的值来替代变量引用,此过程称为变量替换,例如:
$myname=zheng
$echo $myname
zheng
上面的第一行命令给变量myname赋值,第二行命令将变量myname的值显示在屏幕上。命令执行时,字符$会通知Shell它后面引用的是变量的值而不是变量的名字或者一般的字符串。
如果在赋给变量的值中要包含空格、制表符或换行符,应该使用双引号将该字符串括起来,例如:
$ab=“how are you”
$echo $ab
how are you
对于未赋值的变量, Shell将其值看成空字符串,例如:
$echo $a is a string
is a string
$a=aaa
$echo $a is a string
aaa is a string
在赋值语句中,当赋值号右边没有给出字符串时,变量的值也为空字符串,例如:
$abc=
$echo $abc is a string
is a string
如果变量名出现在一个字符串的中间,该变量前后还有一些其他的字符,为了使变量名与其前后的字符分开,需要用花括号把变量名括起来。若不使用花括号将变量名与其前后的字符分开,shell可能误将变量名与其前后的字符合在一起视为一个新变量,例如:
$UNIX=SystemV
$echo ${UNIX}tm is a string
SystemVtm is a string
$echo $UNIXtm is a string
is a string
上例中,shell将UNIXtm看成了一个变量名,由于前面没有给该变量赋值,因此其值为空串。
(3)只读变量
有时,我们希望在说明一个变量并对它赋值后就不再改变它的值,这时可以将变量定义为只读变量,其语法格式如下:
readonly namelist
例如:
$a=2
$readonly a
$echo $a
2
$a=3
a: readonly variable
查看当前定义的只读变量,可以使用不带参数的readonly命令,例如:
$readonly
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。