我看到一些像这样的代码
SERIAL_NO="121"
if [ -z "${SERIAL_NO}" ]; then
echo -e "ERROR: serial number of the device is not provided!"
exit 1
else
这里使用$ {SERIAL_NO}来获取SERIAL_NO变量。 我想知道$ var和$ {var}之间有什么区别,为什么在这里使用$ {var}。
感谢
答案 0 :(得分:5)
实际上 是性能上的微小差异。性能差异的原因是大括号启用Parameter Expansion (PE)解析器。没有大括号,shell知道不会执行参数扩展(因为大括号对于PE是必需的)。当不想要执行PE时,在变量名称周围使用大括号的唯一原因是消除变量名称与其他文本的歧义,例如var="foo"; echo ${var}name
将输出{{1} }。如果没有大括号,shell将尝试扩展名为fooname
的变量,该变量不存在。
答案 1 :(得分:1)
如果没有字母数字字符,则没有区别。您的示例中的大括号是不必要的。
"$foo42"
是$foo42
的内容。 "${foo}42"
是$foo
后跟“42”的内容。
答案 2 :(得分:1)
大括号通常用于防止shell扩展并允许背对背变量。但是在这种情况下可能不是严格需要的。