在 shell 脚本中访问变量的不同方法

在 shell 脚本中访问变量的不同方法

我是 Unix 命令的初学者,因为我目前正在学习如何编写脚本。但是,我无法理解如何实际访问变量。

假设我有一个名为 name( $name) 的变量,我发现有时人们直接使用 using 来访问它$name,而其他人甚至使用${name}or "$name"。所以这非常令人困惑,我不确定有什么区别,因为这与我在其他编程语言中学到的完全不同。

另外,当我尝试将字符串分配给变量时,我应该写$name="happy", $name=happy,"$name=happy"或 let "$name=happy"

答案1

$fred和之间没有区别${fred}。如果您需要说明变量名称的结束位置,则需要使用{}。例如,echo ${end}ing输出变量的值end,后跟字母ing,而echo $ending输出变量的值ending

使用双引号是为了阻止分词。根据经验,每次使用变量时,它都应该用双引号引起来,除非您知道您希望将结果分解为单词,或者您知道这些值永远不会被拆分*(另请参阅什么时候需要双引号?)。

就您的分配示例而言,您可能不希望$其中任何一个中出现符号。

  1. name="happy"- 这是你应该使用的东西
  2. name=happy- 这有效,因为“快乐”是一个单词,可以交互使用,但可能应该在脚本中避免
  3. "name=happy"- 尝试运行一个不寻常名称的命令name=happy,几乎肯定是错误的。
  4. let "name=happy"- 运行一个名为的命令let,它有自己的规则,通常用于 bash 中的算术。

脚注

* 这是一个过于简单化但容易记住的方法。看规格有关如何处理命令的详细信息。

相关内容