在阅读了 Bash 手册和关于 这篇文章之后,我仍然难以理解 eval
命令到底是做什么的,以及它的典型用途是什么。
例如,如果我们这样做:
$ set -- one two three # Sets $1 $2 $3
$ echo $1
one
$ n=1
$ echo ${$n} ## First attempt to echo $1 using brackets fails
bash: ${$n}: bad substitution
$ echo $($n) ## Second attempt to echo $1 using parentheses fails
bash: 1: command not found
$ eval echo \${$n} ## Third attempt to echo $1 using 'eval' succeeds
one
这里到底发生了什么,美元符号和反斜杠是如何与这个问题联系起来的呢?