Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型。
局部变量在本地数据区分配内存进行存储,这个变量归当前的Shell所有,任何子进 程都不能访问本地变量。这些变量与环境变量不同,环境变量被存储在另一内存区,叫做用户环境区,这块内存中的变量可以被子进程访问。变量赋值的方式是:
variable_name = variable_value
如果对一个已经有值的变量赋值,新值将取代旧值。取值的时候要在变量名前加$,$variable_name可以在引号中使用,这一点和其他高级语言是明显不同的。如果出现混淆的情况,可以使用花括号来区分。
例如:echo "Hi, $as",不会输出“Hi, hello worlds”,而是输出“Hi,”。这是因为Shell把$as当成一个变量,而$as未被赋值,其值为空。正确的方法是:echo "Hi, ${a}s"
单引号中的变量不会进行变量替换操作。
变量无需事先声明,需要给变量赋值时,可以这么写: varname=值 [var2=val2 ....]
请注意这边等号左右不能有空格。 要取用一个变量的值,只需在变量名前面加一个 $: # assign a="hello world" # 等号两边均不能有空格存在 # print printf '%s\n' "A is: $a"
其输出结果如下: A is: hello world
有时候变量名可能会和其它文字混淆,比如: num=2 echo "this is the $numnd" # 输出 this is the — shell 尝试寻找 $numnd 的值 echo "this is the ${num}nd" # 输出 this is the 2nd — 修好了!
# 花括号可以隔开变量名,但是放歪了的话… echo "this is the {$num}nd" # 输出 this is the {2}nd — 切是切开了,但是…
var=1
var=$(expr "$var" + 1) # expr 收到三个参数 '1' '+' '1',
关于变量,还需要知道几个与其相关的Linux命令。
env用于显示用户环境区中的变量及其取值;
set用于显示本地数据区和用户环境区中的变量及其取值;
unset用于删除指定变量当前的取值,该值将被指定为NULL;
export命令用于将本地数据区中的变量转移到用户环境区。