![在 shell 脚本中访问变量的不同方法](https://linux22.com/image/183968/%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E8%AE%BF%E9%97%AE%E5%8F%98%E9%87%8F%E7%9A%84%E4%B8%8D%E5%90%8C%E6%96%B9%E6%B3%95.png)
我是 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
。
使用双引号是为了阻止分词。根据经验,每次使用变量时,它都应该用双引号引起来,除非您知道您希望将结果分解为单词,或者您知道这些值永远不会被拆分*(另请参阅什么时候需要双引号?)。
就您的分配示例而言,您可能不希望$
其中任何一个中出现符号。
name="happy"
- 这是你应该使用的东西name=happy
- 这有效,因为“快乐”是一个单词,可以交互使用,但可能应该在脚本中避免"name=happy"
- 尝试运行一个不寻常名称的命令name=happy
,几乎肯定是错误的。let "name=happy"
- 运行一个名为的命令let
,它有自己的规则,通常用于 bash 中的算术。
脚注
* 这是一个过于简单化但容易记住的方法。看规格有关如何处理命令的详细信息。