
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.sh
que 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.sh
arquivos, e toda vez que preciso executar qualquer arquivo, executo um build.sh
script 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.env
por exemplo. E em todos os scripts que utilizam alguma dessas constantes, coloque . constants.env
para carregá-las.
Por exemplo, constants.env
:
HELLO=world
script.sh
#!/bin/bash
. constants.env
echo $HELLO
Executando o exemplo:
$ ./script.sh
world