
Eu tenho um projeto com um arquivo bash comum para variáveis. Existe uma maneira de os scripts alterarem isso?
Um exemplo de script de ação:
$ cat sampleaction.sh
#!/bin/bash
# Source variables
. commonlibrary
# Do action according to mode
case $MODE in
idle)
#do nothing
active)
#do something
$MODE
existe em um arquivo comum e só é verificado na inicialização de cada script de ação individual. Gostaria que esta variável fosse definida pelo script bash de configuração se contiver um sinalizador, por exemplo. --active
.
O script de configuração:
cat initaction.sh
#!/bin/bash
# Source variables
. commonlibrary
# Check flags
while [ $# -gt 0 ]
do
case $1 in
--active)
shift;
MODE=active;;
esac
done
Responder1
Você pode alterar a variável no arquivo comum apenas repetindo os novos valores nesse arquivo:
echo "MODE=active" > commonlibrary
Um exemplo com seu código:
#!/bin/bash
. commonlibrary
case $MODE in
idle)
#do nothing
active)
echo "MODE=newmode" > commonlibrary
Agora, se você tivesse mais de uma variável nesse arquivo, isso seria um problema. Você precisaria obter todas as variáveis primeiro e depois construir todos os novos valores e adicioná-los ao arquivo. Há muitas maneiras de fazer isso, você pode pesquisar sobre isso ou pensar do seu próprio jeito.