Quais shells não suportam expansão parêntese dólar e exigem backticks?

8

A recomendação moderna é usar:

$(...)

em vez do mais antigo:

'...'

principalmente para facilitar a leitura e evitar a necessidade de escapar quando aninhado.

Quais shells não suportam o formulário $(...) , e algum deles ainda está em uso hoje?

    
por joeytwiddle 24.07.2015 / 06:17

2 respostas

8

O shell Bourne original, csh ou tcsh, todos não suportam $() e requerem '' para substituição de comando.

O shell Bourne não é mais usado como shell padrão (/ bin / sh) em muitos sistemas operacionais baseados em UNIX. No entanto, esses shells ainda são fornecidos pelos fornecedores do sistema operacional, 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. Bourne shell ainda está disponível no AIX como 'bsh' (mas foi preterido em 1995 com o AIX 4.1 ) e HP-UX 11.11 '/ usr / old / bin / sh' (Bourne foi removido da 11.23). Eu não tenho certeza quando a mudança foi feita, mas foi há muitos anos.

    
por 24.07.2015 / 07:20
5

O Solaris 10 e o anterior /bin/sh não suportam $() .

Ele ainda está em uso hoje porque o Solaris 10 ainda está em uso, a Sun não deseja substituí-lo por uma versão padrão (até e incluindo o Solaris 10) - e porque a maioria das pessoas considera /bin/sh como o shell padrão e não sabem como portar um script com um shell em conformidade POSIX .

A motivação da Sun para não alterar /bin/sh foi evitar a quebra de scripts de shell existentes que dependem do comportamento de não conformidade.

    
por 24.07.2015 / 08:45