我读过这篇文章:https://superuser.com/questions/304807/brace-expansion-run-several-commands-instead-of-expanding-on-one-line并尝试了eval echo
扩展方式。为什么下面两个命令不同?
命令1:
$ eval echo\ {a,b,c}\;
结果1:
a
b
c
命令2:
$ eval echo\ {a,b,c} \;
结果2:
a echo b echo c
答案 0 :(得分:4)
eval
只是令人困惑的东西,所以摆脱它:
$ echo echo\ {a,b,c}\;
echo a; echo b; echo c;
$ echo echo\ {a,b,c} \;
echo a echo b echo c ;
这应该让人们明白发生了什么。在第一种情况下,eval执行三个不同的echo命令。在第二种情况下,它只评估一个带有字符串' echo b echo c'作为一个论点。