有什么区别:
./script.sh "$VARIABLE"
和
./script.sh ${VARIABLE}
有没有?
答案1
$VARIABLE
如果它们是独立的单词,则它们${VARIABLE}
实际上是相同的。但请注意以下示例,尤其是在脚本中
VARIABLE=USER
echo $VARIABLE
你得到输出
USER
但是当你输入
echo $VARIABLE1
期待得到
USER1
你什么也得不到,因为没有VARIABLE1
定义变量
但如果你使用
echo ${VARIABLE}1
你得到了预期的USER1
输出。
答案2
来自肖恩·J·戈夫:$VAR 与 ${VAR} 以及引用或不引用
VAR=$VAR1 是 VAR=${VAR1} 的简化版本。有些事情第二个可以做,而第一个不能,例如引用数组索引(不可移植)或删除子字符串(POSIX-可移植)。请参阅《Bash 初学者指南》的“更多关于变量”部分以及 POSIX 规范中的参数扩展。
在变量周围使用引号,如 rm -- "$VAR1" 或 rm -- "${VAR}" 是一个好主意。这使得变量的内容成为原子单元。如果变量值包含空格($IFS 特殊变量中的字符,默认情况下为空格)或通配字符并且您不引用它,则每个单词都会被考虑用于文件名生成(通配),其扩展会产生与无论你在做什么。