上一章Linux shell编程请查看:shell脚本介绍及其操作
在本章中我们将学习如何在Unix shell编程中使用Shell变量。变量是我们赋值的字符串,赋值可以是数字、文本、文件名、设备或任何其他类型的数据。变量只不过是一个指向实际数据的指针,shell允许你创建、分配和删除变量。
1、变量名
变量名只能包含字母(a到z或a到z)、数字(0到9)或下划线(_),按照惯例Unix shell变量的名称是大写的,下面的例子是有效的变量名:
MY_VAR
_VAR1
TOKEN_VAR2
下面是无效变量名的示例:
2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!
不能使用其他字符(如!、*或-)的原因是这些字符对于shell有特殊的含义。
2、定义变量
Linux shell变量定义如下:
variable_name=variable_value
例如:
VAR_NAME = "sample"
上面的例子定义了变量名VAR_NAME,并将值“sample”赋给它。这种类型的变量称为标量变量,标量变量一次只能容纳一个值,Shell允许你在变量中存储任何值例如:
STR_VAR = "string"
NUMBER = 158
3、访问变量
要访问存储在变量中的值,需要在变量名前面加上美元符号($),下面的脚本将访问定义的变量名的值并在STDOUT上打印它:
#!/bin/sh
NAME="Espanol"
echo $NAME
4、只读变量
Shell通过使用只读命令将变量标记为只读。变量被标记为只读后,其值不能更改。例如下面的脚本在试图更改NAME的值时生成错误:
#!/bin/sh
NAME="Butterfly"
readonly NAME
NAME="Beatle"
上面的脚本将生成以下结果:
/bin/sh: NAME: This variable is read only.
5、取消或删除变量
取消或删除变量将指示shell从其跟踪的变量列表中删除该变量。取消变量后就不能访问变量中的存储值,下面是使用unset命令取消已定义变量的语法:
unset variable_name
上面的命令取消已定义变量的值,下面是一个演示命令如何工作的简单示例:
#!/bin/sh
NAME="Peppa"
unset NAME
echo $NAME
上面的示例没有打印任何内容,另外注意不能使用unset命令取消标记为只读的变量。
6、变量类型
当shell运行时有三种主要的变量类型:
- 局部变量——局部变量是当前shell实例中的变量,它不能用于由shell启动的程序,它们是在命令提示符处设置的。
- 环境变量——shell的任何子进程都可以使用环境变量。有些程序需要环境变量才能正常运行,通常shell脚本只定义它所运行的程序需要的那些环境变量。
- Shell变量—Shell变量是由Shell设置的特殊变量,Shell需要它才能正常工作,其中这些变量有些是环境变量有些是局部变量。
评论前必须登录!
注册