我有一个简单的问题,但我想知道${varname}$varname有什么区别?

我同时使用了两者,但看不出有什么区别可以告诉我何时使用其中一个。

最佳答案

在变量名中使用{}有助于消除执行变量扩展时的歧义。

考虑两个变量varvarname。让我们看一下您想将字符串name附加到变量var。您不能说$varname,因为那会导致变量varname的扩展。但是,说${var}name可以帮助您获得所需的结果。

$ var="This is var variable."
$ varname="This is varname variable."
$ echo $varname
This is varname variable.
$ echo ${var}name
This is var variable.name

访问数组的任何元素时,也需要使用大括号。
$ a=( foo bar baz )       # Declare an array
$ echo $a[0]              # Accessing first element -- INCORRECT
foo[0]
$ echo ${a[0]}            # Accessing first element -- CORRECT
foo

引用info bash:

   Any  element  of  an  array may be referenced using ${name[subscript]}.
   The braces are required to avoid conflicts with pathname expansion.

关于shell - Shell脚本中的$ {varname}和$ varname有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19513174/

10-11 05:17