赞
踩
变量就是程序设计语言中的一个可以变化的量,当然,可以变化的是变量的值。变量几乎所有的程序设计语言中都有定义,并且其涵义也大同小异。从本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址。
在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代表内存地址的变量名却保持不变。
在Shell中,变量名可以由字母、数字或者下划线组成,并且只能以字母或者下划线开头。对于变量名的长度,Shell并没有做出明确的规定。因此,用户可以使用任意长度的字符串来作为变量名。但是,为了提高程序的可读性,建议用户使用相对较短的字符串作为变量名。
在一个设计良好的程序中,变量的命名有着非常大的学问。通常情况下,用户应该尽可能选择有明确意义的英文单词作为变量名,尽量避免使用拼音或者毫无意义的字符串作为变量名。这样的话,用户通过变量名就可以了解该变量的作用。
例如,下面的变量名都是非常好的选择:
PATH=/sbin
UID=100
JAVA_HOME="/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/../.."
SSHD=/usr/sbin/sshd
Shell是一种动态类型语言和弱类型语言,即在Shell中,变量的数据类型毋需显示地声明,变量的数据类型会根据不同的操作有所变化。准确地讲,Shell中的变量是不分数据类型的,统一地按照字符串存储。 但是根据变量的上下文环境,允许程序执行一些不同的操作,例如字符串的比较和整数的加减等等。
【例1】演示Shell变量的数据类型
#!/bin/bash x=123 #定义变量x,并且赋值为123 let "x += 1" #变量x加1 echo "x = $x" #输出变量x的值 124 echo #显示空行 y=${x/1/abc} #替换x中的1为abc,并且将值赋给变量y abc24 echo "y = $y" #输出变量y的值 abc24 declare -i y #声明变量y echo "y = $y" #输出变量y的值 let "y += 1" #变量y的值加1 #abc24不是整形,便将y变为0,0自增为1 echo "y = $y" #输出变量y的值 1 echo #显示空行 z=abc22 #将字符串赋给变量z echo "z = $z" #输出变量z的值 m=${z/abc/11} #替换变量z中的abc为数字11,并且将值赋给变量m echo "m = $m" #输出变量m的值 let "m += 1" #变量m加1 #弱类型,自动变为int型 echo "m = $m" #输出变量m的值 echo n="" #将空串赋给变量n echo "n = $n" #输出变量n的值 let "n += 1" #变量n加1 echo "n = $n" echo echo "p = $p" #输出空变量p的值 #自动赋值为空 let "p += 1" # 变量p加1 echo "p = $p"
上述代码运行结果
[root@localhost ~]# ./test.sh
x = 124
y = abc24
y = abc24
y = 1
z = abc22
m = 1122
m = 1123
n =
n = 1
p =
p = 1
在Shell中,通常情况下用户可以直接使用变量,而毋需先进行定义,当用户第一次使用某个变量名时,实际上就同时定义了这个变量,在变量的作用域内,用户都可以使用该变量。
【例2】演示通过直接使用变量来定义变量
#!/bin/bash
a=1 #定义变量a #类似于 int n=3 这种操作
b="hello" #定义变量b
c="hello world" #定义变量c
declare attribute variable(声明变量属性)
-p:显示所有变量的值。
-i:将变量定义为整数。在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整数,就设置为0。
declare -i t,把t设置为整型
-r:将变量声明为只读变量。只读变量不允许修改,也不允许删除。readonly,
-a:变量声明为数组变量。但这没有必要。所有变量都不必显式定义就可以用作数组。事实上,在某种意义上,似乎所有变量
都是数组,而且赋值给没有下标的变量与赋值给下标为0的数组元素相同. array,矩阵,变长数组
-f:显示所有自定义函数,包括名称和函数体。function
-x:将变量设置成环境变量,这样在随后的脚本和程序中可以使用。
【例3】演示使用不同的方法了声明变量,导致变量在不同的环境下表现出不同的行为
#!/bin/bash x=6/3 #定义变量x,并将一个算术式赋给它 echo "$x" declare -i x #定义变量x为整数 echo "$x" #仍为之前的x x=6/3 #将算术式赋给变量x,自动转变为2 echo "$x" # x=hello #将字符串赋给变量x echo "$x" #给整型变量赋hello,不是整数,只能给x赋值为0 x=3.14 #将浮点数赋给变量x echo "$x" declare +i x #取消变量x的整数属性 x=6/3 #重新将算术式赋给变量x echo "$x" #6/3 x=$[6/3] #求表达式的值 echo "$x" #2 x=$((6/3)) #求表达式的值 echo "$x" #2 declare -r x #声明只读变量x echo "$x" #2 x=5 #尝试为只读变量赋值 echo</
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。