У меня есть проект с общим файлом 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
Теперь, если у вас в этом файле было больше одной переменной, это создало бы проблему. Вам нужно было бы сначала получить каждую переменную, а затем построить все новые значения и добавить их в файл. Есть много способов сделать это, вы можете либо изучить это, либо придумать свой собственный способ.