As backquotes de estilo antigo ' '
tratam as barras invertidas e aninham-se um pouco diferentes. O novo estilo $()
interpreta tudo entre ( )
como um comando.
echo $(uname | $(echo cat))
Linux
echo 'uname | 'echo cat''
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat
funciona se os backquotes aninhados forem ignorados:
echo 'uname | \'echo cat\''
Linux
diversão de barra invertida:
echo $(echo '\')
\
echo 'echo '\''
\
O novo estilo $()
aplica-se a todas as conchas de POSIX .
Como mouviciel apontou, estilo antigo ' '
pode ser necessário para shells mais antigos.
Além do ponto de vista técnico, o estilo antigo ' '
também tem uma desvantagem visual:
- Difícil de notar:
I like $(program) better than 'program'
- Facilmente confundido com uma única citação:
''''''''''''''''
- Não é tão fácil digitar (talvez nem no layout padrão do teclado)
(e SE usa ' '
para propósitos próprios, foi uma dor escrever esta resposta:)