$和$ {}之间的差异

时间:2014-12-08 18:50:17

标签: shell ksh

有人可以向我解释一下,在korn shell中,有什么区别:

ANOTHER_VAR=${SOME_VAR}

ANOTHER_VAR=$SOME_VAR

我遇到了这些类型的声明,看不出有什么不同......

谢谢!

1 个答案:

答案 0 :(得分:5)

一个名字周围有两个大括号字符,另一个没有;否则,在这种情况下,没有区别。

但是,如果你有:

ONE_VAR="$TWO_VAR_$THREE_VAR"
UNO_VAR="${TWO_VAR}_${THREE_VAR}"

然后$ONE_VAR$UNO_VAR中的值会有所不同,除非$TWO_VAR$TWO_VAR_都存在且$TWO_VAR_包含$TWO_VAR中存储的值1}}加上一个尾随下划线(其中$TWO_VAR可以是空字符串,或者未定义,只要$TWO_VAR_只包含下划线)。

感谢William Pursell pointing out以前版本中的一个小错误。

在许多情况下,您必须使用大括号,例如:

UNE_VAR=${YET_ANOTHER_VAR:-"default setting"}