我有一个简单的问题,但我想知道${varname}和之间的区别是$varname什么?
我使用两者,但我没有看到任何差异可以告诉我何时使用其中一个.
dev*_*ull 12
{}在变量名称中使用有助于在执行变量扩展时消除歧义.
考虑两个变量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
Run Code Online (Sandbox Code Playgroud)
访问数组的任何元素时也需要大括号.
$ a=( foo bar baz ) # Declare an array
$ echo $a[0] # Accessing first element -- INCORRECT
foo[0]
$ echo ${a[0]} # Accessing first element -- CORRECT
foo
Run Code Online (Sandbox Code Playgroud)
引用自info bash:
Any element of an array may be referenced using ${name[subscript]}.
The braces are required to avoid conflicts with pathname expansion.
Run Code Online (Sandbox Code Playgroud)
fed*_*qui 10
它们在基本情况下是相同的,但使用${varname}提供了更多的控制和处理变量的能力.它还会跳过可能造成混淆的边缘情况.最后,它启用了Shell参数扩展中描述的变量扩展:
'$'字符引入了参数扩展,命令替换或算术扩展.要扩展的参数名称或符号可以用大括号括起来,大括号是可选的,但用于保护变量从紧跟在其后面的字符扩展,这些字符可以被解释为名称的一部分.
使用大括号时,匹配的结束大括号是第一个未被反斜杠或带引号的字符串转义的'}',而不是嵌入式算术扩展,命令替换或参数扩展.
参数扩展的基本形式是$ {parameter}.参数的值被替换.当参数是具有多个数字的位置参数时,或者当参数后跟不被解释为其名称一部分的字符时,需要括号.
让我们看一个基本的例子.在这里,使用${}允许我们做一些简单的事情$.考虑我们要写$myvar+ "blabla"::
$ myvar=23
$ echo $myvar
23
$ echo $myvarblabla
<--- the variable $myvarblabla doesn't exist!
$ echo ${myvar}blabla
23blabla
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |