Unix/Linux - 使用 Shell 变量



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

变量只不过是指向实际数据的指针。Shell 使您能够创建、分配和删除变量。

变量名称

变量名只能包含字母(a 到 z 或 A 到 Z)、数字(0 到 9)或下划线字符(_)。

按照惯例,Unix Shell 变量的名称将使用大写字母。

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

_ALI
TOKEN_A
VAR_1
VAR_2

以下是无效变量名的示例:

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

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

定义变量

变量定义如下:

variable_name=variable_value

例如:

NAME="Zara Ali"

上面的示例定义了变量 NAME 并为其分配了值“Zara Ali”。此类型的变量称为标量变量。标量变量一次只能保存一个值。

Shell 使您能够在变量中存储任何想要的值。例如:

VAR1="Zara Ali"
VAR2=100

访问值

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

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

#!/bin/sh

NAME="Zara Ali"
echo $NAME

上述脚本将生成以下值:

Zara Ali

只读变量

Shell 提供了一种方法,可以使用 read-only 命令将变量标记为只读。在变量被标记为只读后,其值将无法更改。

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

#!/bin/sh

NAME="Zara Ali"
readonly NAME
NAME="Qadiri"

上述脚本将生成以下结果:

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

取消设置变量

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

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

unset variable_name

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

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

上面的示例不打印任何内容。您不能使用 unset 命令来取消设置标记为readonly的变量。

变量类型

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

  • 局部变量 - 局部变量是在 Shell 的当前实例中存在的变量。它对 Shell 启动的程序不可用。它们在命令提示符处设置。

  • 环境变量 - 环境变量可用于 Shell 的任何子进程。某些程序需要环境变量才能正常运行。通常,Shell 脚本仅定义其运行的程序所需的那些环境变量。

  • Shell 变量 - Shell 变量是 Shell 设置的特殊变量,Shell 为了正常运行而需要它。其中一些变量是环境变量,而另一些是局部变量。

广告