O comportamento documentado de barras invertidas na substituição de comando no estilo backtick é :
When the old-style backquote form of substitution is used, backslash retains its literal meaning except when followed by ‘$’, ‘'’, or ‘\’.
Ou seja, barras invertidas escapam de cifrões, backticks e outras barras invertidas antes do comando ser dado ao shell para processar (incluindo antes do processamento normal de barras invertidas e aspas). Isso significa que:
'echo \ '
é equivalente a
$(echo \ )
e gera um único espaço. Esse espaço único é inserido como o argumento para seu echo
externo e, em seguida, geralmente perdido durante a divisão de campo, portanto, apenas echo
é executado sem argumentos.
Por outro lado
'echo \'
deixa um \
pendente no final do comando, o que geralmente não é legal (ele indicaria continuação de linha em outro lugar), e está sendo tratado como um literal. Tanto bash
como dash
fazem isso, assim como tcsh
, mas zsh
não. Não parece ser explicitamente especificado no POSIX ou em outro lugar, então suponho que essa implementação comportamento definido.
O uso da substituição do comando $( ... )
permite que você escreva qualquer script sem interferências. Quase sempre será melhor que a substituição de backtick.