我有一个简单的问题,但我想知道${varname}
和$varname
有什么区别?
我同时使用了两者,但看不出有什么区别可以告诉我何时使用其中一个。
最佳答案
在变量名中使用{}
有助于消除执行变量扩展时的歧义。
考虑两个变量var
和varname
。让我们看一下您想将字符串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/