Por que usar parênteses em vez de backticks para executar um comando 'in situ'?

7

Eu recentemente comecei a mudar meu script de shell de utilizar backticks para parens para executar um comando in situ e usar os resultados em outra coisa. Por exemplo:

for line in 'cat file'
do
    echo "$line"
done

Agora eu uso parens, substituindo assim:

for line in $(cat file)
...
Qual é a diferença real entre os dois métodos, e por que a substituição do paren é considerada melhor que os backticks?

    
por warren 21.02.2012 / 19:34

1 resposta

13

Não há diferença funcional, porém $() torna o aninhamento um pouco mais agradável e fácil de seguir. Considere este exemplo bobo:

$ echo 'echo \'echo \\'echo foo\\'\''
foo

vs

$ echo $(echo $(echo $(echo foo)))
foo

Agora, considere fazer isso com uma série complexa de comandos que fazem algo útil;).

    
por 21.02.2012 / 19:43