2015-11-08 2 views
1

Я прочел это сообщение: https://superuser.com/questions/304807/brace-expansion-run-several-commands-instead-of-expanding-on-one-line и попробовал его способ расширения eval echo. Почему две команды ниже разных?Понимание расширения скобы bash


Команда 1:

$ eval echo\ {a,b,c}\; 

Результат 1:

a 
b 
c 

Command 2:

$ eval echo\ {a,b,c} \; 

Результат 2:

a echo b echo c 

ответ

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 выполняет три различные команды эха. Во втором случае он оценивает только одну команду, которая принимает строку «a echo b echo c» в качестве аргумента.

Смежные вопросы