在Linux Shell中使用变量

在本章中,我们将学习如何在Linux中使用Shell变量。 变量是一种可以为其赋值的字符串。 它的值可以是数字、文本、文件名、设备或任何其他类型的数据。

变量只不过是指向实际数据的指针。 Shell脚本中您可以创建、分配和删除变量。

变量名

变量的名称只能包含字母(a到z或A到Z)、数字(0到9)或下划线字符(_)。按照惯例,Shell变量的名称都使用大写字母。

以下示例是有效的变量名称

_EQUIPMENT
EQUIPMENT1
EQUIPMENT_UNUSED

以下是无效变量名的示例

1EQUIPMENT
EQUIPMENT!
EQUIPMENT-USED

不能使用其他字符(如!*-)的原因是这些字符对Shell具有特殊含义

定义变量

变量按如下的格式定义:

variable_name=variable_value

例如:

NAME="Jiu Tong"

上面的示例定义了变量NAME并为其分配了值“Jiu Tong”。 这种类型的变量称为标量变量。 标量变量一次只能保存一个值。 您能够在变量中存储您想要的任何值。 例如:

NAME="Jiu Tong"
AGE=28

访问变量

要访问存储在变量中的值,请在其名称前加上美元符号($)。

例如,以下脚本将访问已定义的变量NAME的值并将其打印在STDOUT上:

#!/bin/bash

NAME="Jiu Tong"
echo $NAME

上面的脚本将产生以下输出:

Jiu Tong

只读变量

Shell提供了一种使用只读命令将变量标记为只读的方法。 将变量标记为只读后,其值将无法更改。

例如,以下脚本在尝试更改NAME的值时生成错误。

#!/bin/bash

NAME="Jiu Tong"
readonly NAME
NAME="Mazi Zhang"

上面的脚本将产生以下输出:

/bin/bash: NAME: This variable is read only.

取消设置变量

取消设置或删除变量会指示Shell从它跟踪的变量列表中删除该变量。 一旦取消设置变量,就无法访问变量中存储的值。

以下是使用unset命令取消设置已定义变量的语法:

unset variable_name

上述命令取消设置已定义变量的值。 这是一个简单的示例,演示了该命令的工作原理。

#!/bin/bash

NAME="Jiu Tong"
unset NAME
echo $NAME

上面的例子没有打印任何东西。 您不能使用unset命令取消设置标记为只读的变量。

变量类型

当Shell运行时,存在三种主要类型的变量:

  • 局部变量 - 局部变量是存在于当前Shell实例中的变量。 它不适用于由Shell启动的程序。 它们是在命令提示符下设置的。
  • 环境变量 - 环境变量可用于Shell的任何子进程。 有些程序需要环境变量才能正常运行。 通常,Shell脚本仅定义它运行的程序所需的那些环境变量。
  • Shell变量 - Shell变量是由Shell设置的特殊变量,Shell需要它才能正常运行。 其中一些变量是环境变量,而另一些是局部变量。