如果您希望在变量中包含特殊字符,您需要以不同的方式引用它。
> newvar=$testvar > echo $newvar 5 > newvar="$testvar" > echo $newvar 5 > newvar='$testvar' > echo $newvar $testvar > newvar=\$testvar > echo $newvar $testvar > |
美元符号不是 Bash Shell 唯一特殊的字符,但它是一个简单的例子。为了利用将变量名分配给另一个变量名的功能,我们可以使用eval来解引用存储的变量名。
> echo $testvar 5 > echo $newvar $testvar > eval echo $newvar 5 > |
通常,Shell 只对正在评估的表达式进行一轮替换:如果您说echo $newvarShell 最多只会确定$newvar等于文本字符串$testvar它不会评估$testvar的值。eval会强制进行该评估。