If you wish to include a special character in a variable, you will have to quote it differently:
> newvar=$testvar > echo $newvar 5 > newvar="$testvar" > echo $newvar 5 > newvar='$testvar' > echo $newvar $testvar > newvar=\$testvar > echo $newvar $testvar > |
The dollar sign isn't the only character that's special to the Bash shell, but it's a simple example. An interesting step we can take to make use of assigning a variable name to another variable name is to use eval to dereference the stored variable name:
> echo $testvar 5 > echo $newvar $testvar > eval echo $newvar 5 > |
Normally, the shell does only one round of substitutions on the expression it is evaluating: if you say echo $newvar the shell will only go so far as to determine that $newvar is equal to the text string $testvar, it won't evaluate what $testvar is equal to. eval forces that evaluation.