Linux shell编程(基本shell变量的定义和使用介绍)

上一章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

【Linux shell编程(基本shell变量的定义和使用介绍)】例如:
VAR_NAME = "sample"

上面的例子定义了变量名VAR_NAME,并将值“sample”赋给它。这种类型的变量称为标量变量,标量变量一次只能容纳一个值,Shell允许你在变量中存储任何值例如:
STR_VAR = "string" NUMBER = 158

3、访问变量要访问存储在变量中的值,需要在变量名前面加上美元符号($),下面的脚本将访问定义的变量名的值并在STDOUT上打印它:
#!/bin/shNAME="Espanol" echo $NAME

4、只读变量Shell通过使用只读命令将变量标记为只读。变量被标记为只读后,其值不能更改。例如下面的脚本在试图更改NAME的值时生成错误:
#!/bin/shNAME="Butterfly" readonly NAME NAME="Beatle"

上面的脚本将生成以下结果:
/bin/sh: NAME: This variable is read only.

5、取消或删除变量取消或删除变量将指示shell从其跟踪的变量列表中删除该变量。取消变量后就不能访问变量中的存储值,下面是使用unset命令取消已定义变量的语法:
unset variable_name

上面的命令取消已定义变量的值,下面是一个演示命令如何工作的简单示例:
#!/bin/shNAME="Peppa" unset NAME echo $NAME

上面的示例没有打印任何内容,另外注意不能使用unset命令取消标记为只读的变量。
6、变量类型当shell运行时有三种主要的变量类型:
  • 局部变量——局部变量是当前shell实例中的变量,它不能用于由shell启动的程序,它们是在命令提示符处设置的。
  • 环境变量——shell的任何子进程都可以使用环境变量。有些程序需要环境变量才能正常运行,通常shell脚本只定义它所运行的程序需要的那些环境变量。
  • Shell变量—Shell变量是由Shell设置的特殊变量,Shell需要它才能正常工作,其中这些变量有些是环境变量有些是局部变量。

    推荐阅读