有人可以解释第二个结果吗?
user$ set 5 5
user$ n=2
user$ eval echo \$$n
5
user$ echo `eval echo \$$n`
10268n
10268是bash pid。
GNU bash,版本4.0.35(0)-release(i386-portbld-freebsd7.2)
UPD:这很好用:
user$ echo `eval echo \\$$n`
5
但是......
user$ echo `eval echo \\\$$n` #3
5
user$ echo `eval echo \\\\$$n` #4
10268n
user$ echo `eval echo \\\\\$$n` #5
10268n
user$ echo `eval echo \\\\\\$$n` #6
$2
user$ echo `eval echo \\\\\\\$$n` #7
$2
user$ echo `eval echo \\\\\\\\$$n` #8
$2
user$ echo `eval echo \\\\\\\\\$$n` #9
10268n
答案 0 :(得分:5)
这一行:
set 5 10
生成位置参数$1=5
并生成$2=10
这一行:
n=2
设置shell变量n to value 2
然后这一行:
eval echo \$$n
实际上是这样的:
echo $2
打印$2
<{1}} 10
最后这一行:
echo `eval echo \$$n`
与(由于后退滴答)相同:
eval echo $$n
实际上是这样的:
echo $$n
打印$$
(当前shell PID)和文字n
因此打印
10268n