Evitando "BASH-isms" em scripts de shell


37

Existe uma ferramenta semelhante ao Perl :: Critic que inspecionará seus scripts de shell e apontará falhas, problemas de portabilidade, uso de programas não-padrão sem fallbacks, uso de programas depreciados, etc.?

Sei que set -o posixdesabilitará o uso que não seja POSIX, mas isso não me dirá o que quero saber, como matrizes de shell de indexação zsh começando em 1 e bash, a partir de 0, e ash não suportando matrizes.

Respostas:


36

checkbashisms . No Debian, ele é enviado como parte das ferramentas de manutenção de pacotes .

Teste seus scripts sob o controle e a sofisticação . Ambos têm algumas construções não POSIX, mas se o seu script funcionar em ambos, provavelmente funcionará na maioria dos lugares. (Com a ressalva de que é difícil testar scripts shell típicos, eles tendem a ter muitos casos de canto.)

Se você pretende que seus scripts sejam portáteis para plataformas Linux incorporadas, teste-os com o BusyBox . Observe que o BusyBox pode ser mais ou menos restrito, dependendo do tamanho de um sistema incorporado desejado; é bastante normal ter scripts que dependem de um recurso que algumas instalações do BusyBox não possuem.

Observe que a não portabilidade não vem apenas do shell, mas também de utilitários externos. O OpenBSD e o Solaris tendem a ter utilitários com recursos POSIX e pouco mais, por isso são bons para testar a portabilidade.

Você deve consultar a especificação POSIX e outros recursos mencionados neste tópico (especialmente o manual do autoconf ); mas isso é documentação, não ajuda se você usar um recurso acidentalmente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.