Изменение общих значений библиотеки проекта из скрипта bash

Изменение общих значений библиотеки проекта из скрипта bash

У меня есть проект с общим файлом bash для переменных. Есть ли способ для скриптов изменить их?

Пример сценария действий:

$ cat sampleaction.sh
#!/bin/bash

# Source variables
. commonlibrary

# Do action according to mode
case $MODE in 
    idle)
        #do nothing
    active)
        #do something

$MODEсуществует в общем файле и проверяется только при запуске каждого отдельного сценария действия. Я бы хотел, чтобы эта переменная устанавливалась скриптом bash настройки, если он содержит флаг, например. --active.

Скрипт установки:

cat initaction.sh
#!/bin/bash

# Source variables
. commonlibrary

# Check flags
while [ $# -gt 0 ]
do 
    case $1 in
        --active)
            shift;
            MODE=active;;
    esac
done

решение1

Вы можете изменить переменную в общем файле, просто введя новые значения в этот файл:

echo "MODE=active" > commonlibrary

Пример вашего кода:

#!/bin/bash
. commonlibrary

case $MODE in 
    idle)
        #do nothing
    active)
        echo "MODE=newmode" > commonlibrary

Теперь, если у вас в этом файле было больше одной переменной, это создало бы проблему. Вам нужно было бы сначала получить каждую переменную, а затем построить все новые значения и добавить их в файл. Есть много способов сделать это, вы можете либо изучить это, либо придумать свой собственный способ.

Связанный контент