Shell脚本中的变量不支持数据类型(整型、字符型等),任何赋值给变量的值都被Shell解释为一串字符。
变量的命名需要遵循以下规则。
(1)命名只能使用字符、数字和下划线,首个字符不能以数字开头。
(2)命名不能出现空格,可以使用下划线。
(3)不能使用Shell中已经定义的关键字。
(4)通常使用全大写的变量,便于识别。
变量赋值的格式如下所示。
变量名=值
上述赋值的格式中,需要注意的是,变量赋值时,等号两边不能出现空格。
在Shell脚本中使用变量时,需要在变量前面加“$”符,表示引用,如例所示。
例
1 #! /bin/sh
2
3 VAR="hello world" #对变量VAR赋值
4 echo $VAR #输出变量VAR的值,引用变量,使用$
Shell脚本中变量的赋值,遵循从右向左的顺序,如例所示。
例
1 #! /bin/sh
2
3 X=a
4 Y=$X
5 echo $Y
上例的运行结果如下所示,变量Y的值为a,验证了赋值的顺序为从右向左。
linux@ubuntu:~/1000phone$ ./test.sh
a
linux@ubuntu:~/1000phone$
Shell编程时,需要特别注意变量与其他字符混淆的问题,如例所示的代码。
1 #! /bin/sh
2
3 NUM=1
4 echo "$NUMnd"
上例的运行结果如下,可见运行无输出内容。
linux@ubuntu:~/1000phone$ ./test.sh
//无输出内容
linux@ubuntu:~/1000phone$
上述输出结果,并没有按照程序编写思维,输出预想的字符串“1nd”。Shell在执行时会搜索变量NUMnd,然而脚本文件中的NUMnd是没有任何赋值的。因此,上例中需要使用大括号来通知Shell打印的变量是NUM。
1 #! /bin/sh
2
3 NUM=1
4 echo "${NUM}nd" #输出变量为NUM
如上例所示,使用大括号选中需要输出的变量,输出结果如下。
linux@ubuntu:~/1000phone$ ./test.sh
1nd //输出正确结果
linux@ubuntu:~/1000phone$