如何在 Linux 中检查变量是否已定义

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习在 Linux 命令行中处理变量的基本技术。首先,你要掌握如何使用 echo 命令显示变量的值,这是检查环境设置和其他存储信息的一项关键技能。

接下来,你将探索如何使用带有 -z 选项的 test 命令来检查变量是否存在或为空,这在脚本编写的条件逻辑中至关重要。最后,你将了解如何使用 env 命令列出当前定义的所有环境变量,从而全面了解你的 shell 环境。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") linux/UserandGroupManagementGroup -.-> linux/unset("Variable Unsetting") subgraph Lab Skills linux/echo -.-> lab-558776{{"如何在 Linux 中检查变量是否已定义"}} linux/test -.-> lab-558776{{"如何在 Linux 中检查变量是否已定义"}} linux/env -.-> lab-558776{{"如何在 Linux 中检查变量是否已定义"}} linux/unset -.-> lab-558776{{"如何在 Linux 中检查变量是否已定义"}} end

使用 echo 显示变量值

在这一步中,你将学习如何使用 echo 命令显示变量的值。Linux 中的变量用于存储信息,这些信息可以被 shell 和其他程序访问和使用。

一种常见的变量类型是环境变量,它存储有关用户环境的信息,例如当前用户、主目录和终端类型。

要显示变量的值,你需要使用 echo 命令,后面跟着美元符号 ($) 和变量名。美元符号告诉 shell 你想要查看变量的 ,而不是变量名本身。

让我们来显示 USER 环境变量的值,该变量存储当前登录用户的名称。

在你的终端中输入以下命令并按回车键:

echo $USER

你应该会看到如下输出:

labex

这表明 USER 变量的值是 labex,这是你在 LabEx 环境中的当前用户名。

现在,让我们显示 HOME 环境变量的值,该变量存储你的主目录的路径。

输入以下命令并按回车键:

echo $HOME

你应该会看到如下输出:

/home/labex

这证实了你的主目录是 /home/labex

你还可以显示 SHELL 环境变量的值,该变量显示你当前使用的 shell 程序的路径。

输入以下命令并按回车键:

echo $SHELL

你应该会看到如下输出:

/usr/bin/zsh

这表明你当前正在使用 zsh shell。

在 Linux 终端中,使用带美元符号的 echo 是访问和显示变量值的基本方法。

使用 test -z 测试变量是否存在

在这一步中,你将学习如何使用带有 -z 选项的 test 命令来检查变量是否为空或未设置。这在脚本编写中很有用,可以根据变量是否有值来做出决策。

test 命令用于计算条件表达式。-z 选项检查字符串的长度是否为零。如果字符串为空(或者变量未设置),则测试结果为真。

让我们来测试一个名为 MY_VARIABLE 的变量是否已设置。首先,我们要确保它未被设置。

输入以下命令并按回车键:

unset MY_VARIABLE

unset 命令用于删除变量。现在,让我们使用 test -z 来检查 MY_VARIABLE 是否为空。我们将它与 echo 结合使用,以查看测试结果。&& 运算符仅在第一个命令成功(返回真值,对于 test 来说意味着条件满足)时才执行第二个命令。

输入以下命令并按回车键:

test -z "$MY_VARIABLE" && echo "MY_VARIABLE is empty or not set"

由于我们刚刚删除了 MY_VARIABLEtest -z "$MY_VARIABLE" 条件为真(变量为空),因此 echo 命令将执行。

你应该会看到如下输出:

MY_VARIABLE is empty or not set

现在,让我们为 MY_VARIABLE 设置一个值。

输入以下命令并按回车键:

MY_VARIABLE="Hello"

现在,让我们再次运行相同的 test -z 命令。

输入以下命令并按回车键:

test -z "$MY_VARIABLE" && echo "MY_VARIABLE is empty or not set"

这一次,MY_VARIABLE 的值为 "Hello",因此它不为空。test -z "$MY_VARIABLE" 条件为假,echo 命令 不会 执行。

这次你应该看不到 echo 命令的输出。

这展示了如何使用 test -z 来检查变量是否为空或未设置。这是 shell 脚本编写中用于条件逻辑的一个基本概念。

使用 env 列出所有环境变量

在这一步中,你将学习如何使用 env 命令列出当前 shell 会话中设置的所有环境变量。

环境变量对于 shell 和程序的运行方式至关重要。它们存储配置信息、可执行文件的路径以及其他设置。

env 命令在不带任何参数运行时,会打印出所有环境变量及其值的列表。

在你的终端中输入以下命令并按回车键:

env

你会看到一长串输出,类似于下面这样(具体输出会因你的系统和配置而异):

SHELL=/usr/bin/zsh
COLORTERM=truecolor
...
USER=labex
...
HOME=/home/labex
...
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
...
PWD=/home/labex/project
...

输出中的每一行都以 VARIABLE_NAME=value 的格式表示一个环境变量。

你可以看到我们在前面步骤中探讨过的一些变量,如 USERHOMESHELL。你还会看到许多其他变量,例如 PATH,它告诉 shell 在哪里查找可执行命令,以及 PWD,它显示你当前的工作目录。

env 命令是一个简单但强大的工具,用于检查 shell 的环境。它常用于调试或了解程序在其环境下的运行方式。

由于输出可能很长,你可以将 env 的输出通过管道传递给像 less 这样的分页器,以便一次查看一屏内容。

输入以下命令并按回车键:

env | less

使用箭头键上下滚动,按 q 退出 less

这一步向你介绍了如何列出所有环境变量。在接下来的步骤中,你将了解更多关于这些变量的使用方法以及如何与它们进行交互。

总结

在这个实验中,你学习了在 Linux 中使用变量的基本技巧。你练习了使用带有美元符号 ($) 的 echo 命令来显示环境变量(如 USERHOMESHELL)的值,了解了该命令是如何获取存储的信息的。

此外,你还探索了如何使用带有 -z 选项的 test 命令来检查变量是否存在或为空,这是脚本编写中进行条件逻辑判断的一项关键技能。最后,你学习了如何使用 env 命令列出当前定义的所有环境变量,从而全面了解 shell 的环境。