最后两篇关于BASH Shell的文章,在这里我们详细讨论了变量,我们的读者高度赞赏。 我们作为youcl-团队非常热衷于为您提供最新的,向上的最新和盖在细节相关的主题。 此外,我们总是试图触及相应主题的主要观点。
Shell脚本中的嵌套变量
这里是最后一篇关于Linux变量的文章,在关闭本主题之前,我们将看到在Shell中定义的变量替换和变量。
Bash在真正执行命令之前执行变量替换。 Linux Bash Shell在执行命令之前搜索所有的'$'符号,并将其替换为variable的值。 Bash变量替换的过程只执行一次。 如果我们有嵌套变量怎么办?
注意 :我们的意思是嵌套变量,变量内声明的变量。 让我们在下面的例子中看到上面的场景。
声明一个只读和可执行变量,如下所示。
avi@localhost:~$ declare -rx Linux_best_website="www.youcl.com"
检查存储的变量的值。
avi@localhost:~$ printf "%s" "$Linux_best_website" www.youcl.com
现在声明另一个变量,它又是只读和可执行的。
avi@localhost:~$ declare -rx Linux_website="Linux_best_website"
现在的情况是,我们定义了两个变量。
'Linux_best_website',其值为“www.youcl.com”
和“Linux_website”,其值为“Linux_best_website”
如果我们运行下面的单行命令,会有什么结果?
avi@localhost:~$ printf "%s" "$Linux_website"
它应先更换变量'$ Linux_website“,值为”Linux_best_website“,然后”$ Linux_best_website“又是一个变量,它的值是”www.youcl.com“。 所以运行下面的命令的最终输出应该是。
avi@localhost:~$ printf "%s" "$Linux_website" www.youcl.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预定义变量List。
没有。 | BASH VARIABLE | 结果 |
1 | auto_resume | 处理已停止作业的命令完成。 |
2 | BASH | PATH的shell。 |
3 | BASH_ENV | 显示配置文件的名称 |
4 | BASH_VERSION | 显示Bash的版本 |
5 | BASH_VERSINFO | 显示详细的版本信息。 |
6 | BASH_VERSINFO [0] | 主要版本号(发行版)。 |
7 | BASH_VERSINFO [1] | 次要版本号(版本)。 |
8 | BASH_VERSINFO [2] | 补丁级别。 |
9 | BASH_VERSINFO [3] | 构建版本。 |
10 | BASH_VERSINFO [4] | 发布状态(例如,beta1)。 |
11 | BASH_VERSINFO [5] | MACHTYPE的值。 |
12 | CDPATH | 用冒号分隔的目录列表。 |
13 | 列 | 标准输出的每行字符数。 |
14 | EUID | 当前用户的用户ID。 |
15 | FCEDIT | fc命令的默认文本编辑器。 |
16 | FUNCNAME | 乐趣的名字 |
17 | 组 | 用户是其成员的组。 |
18 | HISTFILE | 包含命令历史记录的文件。 |
19 | 家 | 您的主目录的名称。 |
20 | 线 | 标准输出上的水平线数。 |
21 | 邮件 | 要检查传入邮件的文件的名称 |
22 | OSTYPE | 操作系统的名称。 |
23 | OLDPWD | 上一个工作目录 |
24 | PWD | 当前工作目录 |
25 | 随机 | 打印随机数 |
26 | 贝壳 | 首选shell使用 |
27 | 时间格式 | time命令的格式。 |
28 | UID | 当前用户的ID |
有一个庞大的预定义BASH变量列表。 我们试图产生一个最常用的列表。
目前为止就这样了。 我会再次在这里与另一个有趣的文章。 直到那时敬请关注,并连接到youcl。 不要忘记在下面的评论部分向我们提供您的宝贵反馈。