shell编程中什么是变量替换

shell编程中什么是变量替换

这个问题非常基本,我不仅向自己问这个问题,还向其他看到该术语的新人问这个问题变量替换并有以下想法:

据我了解,这个词变量替换描述了“用一个变量的值替换另一个变量的值”,但我怀疑这是正确的。
我想知道为什么此操作需要一个特殊术语,而不只是说“通过在文本编辑器中手动编辑变量来更改变量的值?”

什么是变量替换shell 编程中的概念,如果您知道答案,请给出一个实际示例,说明它在您的工作中使用了哪些类型的操作。

答案1

将给定变量的值替换为另一个变量的值。

这种描述在很多方面都是错误的。变量替换取代姓名变量(加上一些语法错误)的价值。此外,它不是在变量“中”操作,而是在命令中操作。该命令可以是设置变量值的命令,但这只是众多情况中的一种。

例如,该命令echo $foo显示变量的值。源代码包含$foo,并且相应的输出包含变量的值foo

这被称为“变量替换”的原因是 shell 通过一系列字符串(和字符串列表)转换来操作。例如(简化),考虑命令ls -l $dir/*.$ext。为了评估它,需要按顺序发生几件事:

  1. shell 开始解析命令并将其拆分为三个单词:ls-l$dir/*.$ext
  2. 在第三个单词中,shell 看到要执行两个变量替换(这就是美元符号在此上下文中的含义)。假设diris的值和is/some/path的值,则 shell 重写为.这是一个替换,因为每个变量的值都替换了美元名称语法。exttxt$dir/*.$ext/some/path/*.txt
  3. shell 将通配符模式扩展/some/path/*.txt为匹配文件名的列表。
  4. shellls使用计算出的参数执行。

(语法$foo 不只是替换变量的值但这是另一个故事了。)

在大多数编程语言中,要获取变量的值,只需编写变量的名称即可。 shell 是为交互式使用而设计的;如果你写一个名字,它会被解释为一个文字字符串。这就是为什么获取变量值的语法有一个额外的标记来表示“我想获取变量的值”。

为什么此操作需要一个特殊术语,而不只是说“通过在文本编辑器中手动编辑变量来更改变量的值?”

变量替换与更改变量的值无关。改变变量的值是任务

当然,像任何其他命令一样,赋值可以包含变量替换。但变量替换并不是专门为赋值而设计的。

此外,您无法使用编辑器更改变量的值。已声明的变量在每个进程中都有一个值,它不是系统配置。您可以使用配置文件来设置最初的变量的值,您可以使用编辑器更改这些文件中的初始值,但之后该值可以更改。

相关内容