列出我的所有变量

列出我的所有变量

我只是在学习基础知识,包括如何声明和使用变量。有没有一种简单的方法来显示我命名的所有变量的列表? (我通过搜索找到的所有内容都只讨论环境变量,这可能是我正在寻找的内容,但可能不是?)

答案1

运行declare本身将为您提供所有环境变量的列表在当前外壳中,包括您自己定义的那些。它还将包含任何功能,除非您使用-p跳过它们的选项,但会增加一些额外的噪音。

答案2

有 2 种不同类型的变量(实际上比这更多,但在本上下文中只有 2 个):私有变量和导出变量。

  • 私有变量是可以在 shell(或脚本)中使用但不能由 shell(或脚本)启动的程序使用的变量。您可以使用、或
    获取所有变量的列表,包括导出的变量。在 bash 中,这三个都做同样的事情。declaretypesetset

  • 导出的变量可由 shell 或由它启动的程序使用。
    您可以使用 获取导出变量的列表env

需要注意的一件关键事情是在做这样的事情时:

FOO="bar"
echo "$FOO"

$FOO是私有/非导出变量。外壳在传递到 之前实际上已经扩展$FOO到。所以实际上被称为.barechoechoecho "bar"


您可以通过执行export FOO, 或 来导出变量export FOO="bar"
此外,您可以通过在命令开头添加变量来导出变量,以便仅对程序进行一次调用。例如

FOO="bar" cmd1
cmd2

cmd1将可以访问$FOOcmd2不会。

相关内容