3.2. 引号和特殊字符

如果您希望在变量中包含特殊字符,您需要以不同的方式引用它。

> 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会强制进行该评估。