将变量传递给脚本

将变量传递给脚本

有什么区别:

./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 特殊变量中的字符,默认情况下为空格)或通配字符并且您不引用它,则每个单词都会被考虑用于文件名生成(通配),其扩展会产生与无论你在做什么。

相关内容