Nomes de funções upstart e bash contendo “-”

5

Eu herdei alguns scripts do bash em que o autor usou "-" nos nomes das funções em vez do mais normal "_", por exemplo:

function a-b {
...
}

Feio mas legal no bash. Problema é que eu sourced isso dentro de um script upstart e tenho

x.sh: line 5: 'a-b': not a valid identifier

Demorou um pouco para perceber que era o nome e não o conteúdo da função. De qualquer forma, renomear não é uma opção fácil neste caso e, como eu aprendi, o upstart usa /bin/sh não /bin/bash para analisar? execute seus scripts. Daí eu acho que esse problema.

Alguma idéia sobre uma solução diferente da renomeação?

Se nada mais, pelo menos eu espero que esta pergunta avise os outros sobre os perigos dos estilos de código bash e como eles voltam para te morder às vezes.

    
por Neil McGill 23.08.2014 / 02:32

1 resposta

6

Do livro de receitas do Upstart, Alterando o Shell Padrão . Existem 3 opções, as 2 primeiras envolvem a mudança do seu shell padrão de /bin/sh para outra coisa. Mas a terceira opção parece resolver o seu problema em particular.

trecho

Use a "here document" (assuming your chosen shell supports them) within the Job Configuration Files you wish to run with a different shell:

script
/bin/bash <<EOT

echo "Hi - I am running under the bash shell"

date

echo "and so am I :)"

EOT
end script
    
por 23.08.2014 / 02:50