Mantendo várias constantes para vários scripts bash

Mantendo várias constantes para vários scripts bash

Eu tenho vários scripts bash individuais. Eles fazem coisas diferentes e são grandes (70 a 100 linhas cada). Assim, mantive-os em arquivos separados. Mas estão todos relacionados com um problema central e, portanto, partilham vários valores constantes em comum.

Então, para simplificar, tenho dez variáveis ​​constantes, algumas são strings, outras são números, enquanto duas são arrays, todas elas precisam estar disponíveis em dez scripts bash diferentes. Como faço para conseguir isso?

Observe que, embora exista uma central main.shque possa chamar esses scripts bash individuais, nem sempre será esse o caso. Eles também podem ser chamados diretamente da linha de comando ( ./script1.sh). Mesmo nesse caso as variáveis ​​devem ser disponibilizadas para os scripts.

A única maneira que pensei foi codificar em dev/script1.temp.sharquivos, e toda vez que preciso executar qualquer arquivo, executo um build.shscript bash que simplesmente substitui (via grep) todas as ocorrências de uma constante específica ( $CONSTANT) em todo o arquivo para produzir build/script1.sh.

Responder1

Coloque todas as constantes em um arquivo, constants.envpor exemplo. E em todos os scripts que utilizam alguma dessas constantes, coloque . constants.envpara carregá-las.

Por exemplo, constants.env:

HELLO=world

script.sh

#!/bin/bash
. constants.env
echo $HELLO

Executando o exemplo:

$ ./script.sh 
world

informação relacionada