$ var和$ {var}之间有什么区别

mik*_*ike 5 shell

我看到一些像这样的代码

  SERIAL_NO="121"
  if [ -z "${SERIAL_NO}" ]; then
     echo -e "ERROR: serial number of the device is not provided!"
     exit 1
  else
Run Code Online (Sandbox Code Playgroud)

这里使用$ {SERIAL_NO}来获取SERIAL_NO变量.我想知道$ var和$ {var}之间的区别,以及为什么在这里使用$ {var}.

谢谢

Sie*_*geX 5

实际上有一个微小的差别表现明智的.存在性能差异的原因是大括号启用参数扩展(PE)解析器.没有大括号,shell知道不会执行任何参数扩展(因为大括号对于PE是必需的).使用围绕一个变量名的括号当你的唯一原因希望执行PE为消除歧义变量名的其他文本,如var="foo"; echo ${var}name将输出fooname.如果没有大括号,shell将尝试扩展名为$varname不存在的变量.