Bash 变量2025年03月17日 | 阅读 9 分钟 变量是编程的重要组成部分,或者我们可以说它们是编程语言的灵魂。变量通过字符、数字和字母数字指定内存位置。它们用于在计算机程序中进行引用和操作。 什么是变量?变量是存储数据或有用信息作为其内部值的容器。变量的语法如下: 变量是两个词的组合,即 vary + able,这意味着它的值可以改变,并且可以多次使用。 变量被称为任何类型数据的临时存储,如整数、浮点数、字符等。变量名可以包含字母、数字和下划线,并且其名称只能以字母和下划线开头。 注意:我们不能定义一个以数字开头的变量名。什么是 Bash 变量?如果不了解有关 Bash 变量的正确信息(语法、数据类型、类型、工作原理),我们将无法使用它们,因此,让我们通过本简短教程来全面了解 Bash 变量。 首先,了解语法。 语法定义 Bash 变量的规则集
数据类型在正式的编程语言中,您必须在变量声明时定义任何变量的数据类型。例如: 但在 Bash 中,您不必在声明变量时定义变量的数据类型。Bash 变量是无类型的,这意味着只需键入变量名并为其赋值,它就会自动考虑该数据类型。 例如,如果您将任何数值赋给变量,它将作为整数工作;如果您将字符值赋给变量,那么它将是字符串。 使用 echo 命令,在变量名前加上 $ 符号来读取它们,如下所示: echo $year Bash 变量的类型在 shell 或任何 UNIX 系统中有两种类型的变量。
1. 系统定义的变量:这些是预定义的变量,因为它们由 LINUX 操作系统本身创建和维护。它们的标准约定是,通常它们都以大写字母定义,即 UPPER_CASE。因此,每当您看到以大写字母定义的变量时,它们很可能就是系统定义的变量。 以下是系统定义的变量,如下所示: 1. BASH 表示 Shell 名称。 示例 2. BASH_VERSION 指定 Bash 保存的 shell 版本。 示例 3. COLUMNS 指定我们屏幕的列数。 示例 4. HOME 指定用户的家目录。 示例 5. LOGNAME 指定登录的用户名。 示例 6. OSTYPE 告诉我们操作系统的类型。 示例 7. PWD 表示当前工作目录。 示例 8. USERNAME 指定当前登录的用户名。 示例 要了解您系统中的这些变量列表,请在命令行终端中键入 set、env 和 printenv 命令,如下所示: 1. 键入 set 命令。 输出 ![]() 2. 键入 env 命令 输出 ![]() 3. 键入 printenv 命令 输出 ![]() 让我们通过 Bash Shell 调用这些变量。以下是步骤: 步骤 1:创建一个名为 Bash_sdvar 的脚本,并在 Bash 控制台中键入以下代码: 步骤 2:查看下面的 Bash 控制台。 ![]() 步骤 3:保存并执行脚本。它将显示输出,如您在下图中看到的。 输出 ![]() 2. 用户定义的变量:这些变量由用户创建和维护。通常,这些类型的变量以小写字母定义。没有严格的规则要求将这些变量写成小写字母。我们也可以将它们写成大写字母。 让我们创建一个 Bash 脚本来定义这些变量。请按照以下步骤进行: 步骤 1:创建一个名为 Bash_udvar 的脚本,并在 Bash 控制台中键入以下代码: 步骤 2:查看 Bash 控制台中的代码。 ![]() 步骤 3:保存并执行脚本。 输出 ![]() Bash 变量的工作原理在对变量进行基本演示之后,让我们继续了解它们是如何工作的。 在 Bash 中,我们通常对变量执行两个操作,如下所示:
变量值可以通过多种方式设置,最常见的方式是直接设置值。要读取变量,我们可以将其名称(前面加上 $ 符号)放置在脚本中的任何位置。 Bash 首先检查脚本中是否存在所有变量名。然后它解释我们脚本的每一行。在识别每个变量后,它会将变量名替换为其分配的值。最后,它会解释/运行该行代码,并为脚本中的每一行代码继续此过程。 注意:Bash 中的两种变量(我们已经讨论过)都可以在终端和 Bash 脚本中工作。让我们通过一个简单的示例来了解它们在终端和 Bash 中的工作原理:示例:调用用户名 XYZ,他当前工作的地点,以及他用于 Bash 脚本的 Bash Shell 版本。 1. 在终端中工作![]() 2. 在 Bash Shell 中工作请看名为 Bash_Var 的脚本,如下所示: ![]() 在脚本的第 3 行,我们声明了一个变量 USER_NAME 来存储用户名 XYZ 作为其值。 在最后两行,我们使用 echo 命令打印了预期的消息。 此消息中有两个变量和一个命令。它们每个都以美元符号($)为前缀,其中:
为了更好地理解,请按照以下代码创建此脚本: 它将显示输出,如您在下图所示: 输出 ![]() 还有一些练习变量在终端和 Bash Shell 中工作的示例。通过遵循规则集(前面讨论过),按如下方式练习变量: A. 使用命令行终端 1. 设置变量 ![]() 2. 读取和引用变量 ![]() 3. 无效变量 ![]() 4. 组合两个字符串变量 ![]() 5. 将字符串与变量连接 ![]() 注意:不要使用单引号来组合两个变量,也不要用于将字符串与变量连接。例如,如果您将字符串括在单引号中进行连接,那么将无法读取它们,如您在下图所示:![]() B. 使用 Bash 脚本 这是一个组合字符串变量的示例。 输出 ![]() 命令行参数命令行参数用于通过向代码传递输入来使脚本更加动态。我们在脚本运行时以以下形式传递这些参数: 脚本名称和所有传递的参数之间不应有空格。 如何使用命令行参数?在 Bash Shell 中,它们使用以下默认参数或特殊变量进行引用。
以下是我们将用于传递命令行参数的两种方法: 方法 1:使用位置编号 这是通过使用默认参数($1...$9)访问参数的第一种方法。下图对其进行了说明: ![]() 输出 ![]() 方法 2:使用数组。 这是将参数作为数组传递的第二种方法。请按照以下算法应用此方法。 步骤 1:创建一个 Bash 脚本。 步骤 2:声明任何变量名,并按以下形式为其赋值 $a: 其中 $@ 是用于将参数(我们传递的)存储为数组的默认参数。 步骤 3:通过定义数组索引来显示参数,形式如下: 步骤 4:保存并关闭脚本。 步骤 5:通过传递参数来执行脚本。 请看下面的程序: 程序在 Bash 控制台上 ![]() 输出 ![]() 命令替换根据 Bash 官方文档: "命令替换允许命令的输出替换命令本身。Bash 通过在子 shell 环境中执行命令来执行扩展,并将命令替换替换为命令的标准输出,删除任何尾随的换行符。嵌入的换行符不会被删除,但在单词拆分期间可能会被删除。" 命令替换是指 Bash 为我们执行的扩展。它获取 Bash 命令的输出,(通常)将其存储在变量中,然后使用 echo 显示回来。 命令替换在脚本编写和变量赋值方面提供了数据灵活性。它简单易用,可以获取单行命令输出。如果输出超过几行,那么将删除新尾随的行,并且输出的全部内容将显示在单行上。 请看使用语法: 语法在变量或命令替换中替换命令的经典形式是使用反引号(`...`),如下所示: 现在,我们通过将命令包含在括号中(前面加上美元符号 $)来进行命令替换。看一看: 那么,让我们按照讨论的示例来进行命令替换。 在此示例中,我们将单个命令 ls 替换到一个变量中。请查看终端。 ![]() 第 1 行:没有命令替换,输出会扩展到多行。 第 2 行和第 3 行:使用命令替换,输出结束在单行上(通过删除新尾随的行节省了空间)。 以下是用于测试命令替换的 Bash 脚本。 程序请看 Bash 控制台: ![]() 输出 ![]() 下一个主题读取用户输入 |
我们请求您订阅我们的新闻通讯以获取最新更新。