这个问题非常基础,我不仅为自己问这个问题,也为其他看到变量替换一词并有以下想法的新人问这个问题:
据我了解,术语变量替换描述了“将变量的值替换为另一个值”,但我怀疑这是正确的。
我想知道为什么这个操作需要一个特殊的术语,而不是仅仅说“通过在文本编辑器中手动编辑来更改变量的值?
什么是shell 编程中的变量替换概念,如果您知道答案,请举例说明它在您的工作中使用了哪些类型的操作。
将给定变量的值替换为另一个值。
这种描述在几个方面是错误的。变量替换用它的值替换变量的名称(加上一些语法上的错误)。此外,它不是“在”变量中运行,而是在命令中运行。命令可以是设置变量值的命令,但这只是众多情况中的一种。
例如,该命令echo $foo显示变量的值。源代码包含$foo,对应的输出包含变量的值foo。
这被称为“变量替换”的原因是外壳通过一系列字符串(和字符串列表)的转换进行操作。例如(简化),请考虑命令ls -l $dir/*.$ext. 为了评估它,有几件事会依次发生:
ls,-l和$dir/*.$ext。dir是/some/path和值ext是txt,那么外壳重写$dir/*.$ext来/some/path/*.txt。这是一种替换,因为每个变量的值都替换为美元名称语法。/some/path/*.txt为匹配文件名的列表。ls使用它计算的参数执行。(语法$foo 不仅仅是替代变量的值,但这是另一回事。)
在大多数编程语言中,要获取变量的值,只需编写变量的名称。shell 是为交互使用而设计的;如果你写一个名字,它会被解释为一个文字字符串。这就是为什么取变量值的语法有一个额外的标记来表示“我想取一个变量的值”。
为什么此操作需要一个特殊术语,而只是说“通过在文本编辑器中手动编辑来更改变量的值?
变量替换与更改变量的值无关。改变一个变量的值是一种赋值。
当然,赋值可以包含变量替换,就像任何其他命令一样。但是变量替换并不是专门为赋值而设计的。
此外,您无法使用编辑器更改变量的值。已经声明的变量在每个进程中都有一个值,它不是系统配置。您可以拥有设置变量初始值的配置文件,并且您可以使用编辑器来更改这些文件中的初始值,但之后该值可以更改。
| 归档时间: |
|
| 查看次数: |
967 次 |
| 最近记录: |