A recomendação moderna é usar:
$(...)
em vez do mais antigo:
`...`
principalmente para facilitar a leitura e evitar a necessidade de escapar ao aninhar.
Quais shells não suportam o $(...)
formulário e ainda existem hoje em uso?
shell
command-substitution
portability
joeytwiddle
fonte
fonte
cmd
) em * shells foram descontinuados? e você encontrará a resposta.sh
que, no ambiente certo, será compatível$(...)
.Respostas:
O shell Bourne original, csh ou tcsh, todos não suportam
$()
e requerem``
substituição de comando.O shell Bourne não é mais usado como o shell padrão (/ bin / sh) em muitos sistemas operacionais baseados em UNIX. No entanto, esses shells ainda são fornecidos pelos fornecedores do SO, pois ainda são usados por razões históricas.
O AIX e o HP-UX possuem / bin / sh como um shell compatível com POSIX. O shell Bourne ainda está disponível no AIX como 'bsh' (mas obsoleto em 1995 com o AIX 4.1) e no HP-UX 11.11 '/ usr / old / bin / sh' (o Bourne foi removido do 11.23). Não tenho certeza de quando a troca foi feita, mas foi há muitos anos.
fonte
O Solaris 10 e versões anteriores
/bin/sh
não suportam$()
.Ele ainda está em uso hoje porque o Solaris 10 ainda está em uso, a Sun não queria substituí-lo por uma versão em conformidade padrão (até o Solaris 10 inclusive) - e porque a maioria das pessoas considera
/bin/sh
o shell padrão e não sabe como executar portably um script com um shell em conformidade com POSIX .A motivação da Sun para não mudar
/bin/sh
era evitar a quebra de scripts de shell existentes que se baseiam no comportamento não conforme.fonte
/bin/sh
...