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 提供了一种使用只读命令将变量标记为只读的方法。 变量被标记为只读后,其值将无法更改。

例如,以下脚本在尝试更改 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 命令取消设置标记为只读的变量。


变量类型

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

  • 局部变量 − 局部变量是存在于 shell 的当前实例中的变量。 它不适用于由 shell 启动的程序。 它们是在命令提示符下设置的。

  • 环境变量 − 环境变量可用于 shell 的任何子进程。 有些程序需要环境变量才能正常运行。 通常,shell 脚本只定义它运行的程序所需的那些环境变量。

  • Shell 变量 − shell 变量是由 shell 设置的特殊变量,shell 需要它才能正常运行。 其中一些变量是环境变量,而另一些是局部变量。