Linux 中的嵌套变量替换和预定义 BASH 变量 - 第 11 部分
我们在 BASH Shell 上的最后两篇文章详细讨论了变量,读者对此评价很高。作为示例团队,我们非常热衷于为您提供最新、最新和相关主题的详细介绍。此外,我们总是尝试触及相应主题的主要观点。
这是有关 Linux 变量的最后一篇文章,在结束本主题之前,我们将看到变量替换和 Shell 中定义的变量。
Bash 在命令真正执行之前执行变量替换。Linux Bash Shell 在执行命令之前搜索所有 '$' 符号并将其替换为变量的值。Bash 变量替换过程仅执行一次。如果我们有嵌套变量怎么办?
注意:嵌套变量是指在变量内部声明的变量。让我们在下面的示例中看看上述场景。
声明一个只读且可执行的变量,如下所示。
avi@localhost:~$ declare -rx Linux_best_website="www.example.com"
检查存储的变量的值。
avi@localhost:~$ printf "%s" "$Linux_best_website" www.example.com
现在声明另一个变量,该变量同样是只读和可执行的。
avi@localhost:~$ declare -rx Linux_website="Linux_best_website"
现在的情况是,我们已经定义了两个变量。
'Linux_best_website',其值为“www.example.com”
,以及'Linux_website',其值为“Linux_best_website”
如果我们运行下面的单行命令,结果会是什么?
avi@localhost:~$ printf "%s" "$Linux_website"
它应该首先用值“Linux_best_website”替换变量“ $Linux_website ”,然后“ $Linux_best_website ”再次是一个变量,其值为“ www.example.com ”。因此,运行以下命令的最终输出应该是。
avi@localhost:~$ printf "%s" "$Linux_website" www.example.com
但不幸的是,情况并非如此,我们得到的输出是Linux_best_website。
原因?没错!Bash 只替换变量值一次。那么对于需要频繁替换变量以及需要多次替换变量的复杂脚本和程序该怎么办呢?
这里出现了命令“ eval ”,它在脚本中多次执行变量替换的额外工作。下面是一个例子,使整个工作一目了然。
声明一个变量x,其值为10。
avi@localhost:~/Desktop$ declare x=10
检查我们刚刚定义的变量x的值。
avi@localhost:~/Desktop$ echo $yx x10
声明一个变量y,其值为x。
avi@localhost:~/Desktop$ declare y=x
检查我们刚刚定义的变量y的值。
avi@localhost:~/Desktop$ echo $y x
这是BASH一次性变量替换的问题,它不执行额外的变量替换。我们使用“ eval ”命令来解决这个问题。
avi@localhost:~/Desktop$ eval y=$x
现在检查变量‘ y ’的值。
avi@localhost:~/Desktop$ echo $y 10
好极了!问题已修复,“ eval ”命令胜出
更不用说,' eval '命令在大型脚本程序中非常有用,并且是一个非常方便的工具。
这篇文章的最后一部分是 BASH 预定义变量。不!看到这个列表不要惊慌。在开始编写脚本之前,您无需记住整个列表,只需记住几个即可。作为学习过程的一部分,我们将介绍 BASH 预定义变量列表。
不。 | BASH 变量 | 结果 |
1 | 自动恢复 | 处理已停止作业的命令完成。 |
2 | 重击 | shell 的 PATH。 |
3 | BASH_ENV | 显示配置文件的名称 |
4 | BASH_VERSION | 显示 Bash 的版本 |
5 | BASH_VERSINFO | 显示详细的版本信息。 |
6 | BASH_VERSINFO[0] | 主版本号(发布版本)。 |
7 | 注释: | 次版本号(版本)。 |
8 | BASH_VERSINFO[2] | 补丁程序级别。 |
9 | BASH_VERSINFO[3] | 构建版本。 |
10 | 错误原因: | 发布状态(例如 beta1 )。 |
11 | BASH_VERSINFO[5] | MACHTYPE 的值。 |
12 | 路径 | 用冒号分隔的目录列表。 |
十三 | 专栏 | 标准输出每行的字符数。 |
14 | 欧盟身份证 | 当前用户的用户 ID。 |
15 | 编辑 | fc 命令的默认文本编辑器。 |
16 | 函数名 | 乐趣的名称 |
17 | 团体 | 用户所属的群组。 |
18 | 历史文件 | 包含命令历史记录的文件。 |
19 | 家 | 您的主目录的名称。 |
20 | 线 | 标准输出上的水平线数。 |
21 | 邮件 | 用于检查传入邮件的文件名 |
22 | 操作系统类型 | 操作系统的名称。 |
23 | 老年残疾 | 先前的工作目录 |
24 | 残障人士 | 当前工作目录 |
二十五 | 随机的 | 打印随机数 |
二十六 | 壳 | 首选使用的 shell |
二十七 | 时间格式 | 时间命令的格式。 |
二十八 | 唯一标识 | 当前用户的ID |
预定义 BASH 变量列表非常长。我们尝试列出最常用的变量。
现在就这些了。我会再来这里发表另一篇有趣的文章。在此之前,请继续关注并关注示例。不要忘记在下面的评论部分向我们提供您宝贵的反馈。