Open malongshuai opened 4 years ago
最后那部分代码"a=name" 改为“a=nama“ ,命令才能成功执行。另问”eval echo \$$a“为何要个反斜杠
@cws999 最后那部分代码"a=name" 改为“a=nama“ ,命令才能成功执行。另问”eval echo \$$a“为何要个反斜杠
eval echo \$$a
,如果没有反斜线,eval echo $$a
解析命令行时会将$$
解析为变量(即bash PID),相当于$$
变量的值后面加个字符a,第二轮解析命令行得到的是echo PID值a。加反斜线,第一个$
被保护,不被shell解析,于是解析的是$a
,解析完后得到的是eval echo $name
,再解析一遍,得到的就是期待的结果。
太棒了,解决我一直以来的疑惑,赞👍🏻
https://www.junmajinlong.com/shell/script_course/shell_cmdline_parse_eval/
Shell脚本深入教程:Bash解析命令行和eval命令★★★