Ich habe ein Projekt mit einer gemeinsamen Bash-Datei für Variablen. Gibt es eine Möglichkeit, diese über Skripte zu ändern?
Ein Beispiel für ein Aktionsskript:
$ cat sampleaction.sh
#!/bin/bash
# Source variables
. commonlibrary
# Do action according to mode
case $MODE in
idle)
#do nothing
active)
#do something
$MODE
existiert in einer gemeinsamen Datei und wird nur beim Start jedes einzelnen Aktionsskripts überprüft. Ich möchte, dass diese Variable vom Setup-Bash-Skript gesetzt wird, wenn es ein Flag enthält, z. B. --active
.
Das Setup-Skript:
cat initaction.sh
#!/bin/bash
# Source variables
. commonlibrary
# Check flags
while [ $# -gt 0 ]
do
case $1 in
--active)
shift;
MODE=active;;
esac
done
Antwort1
Sie können die Variable in der gemeinsamen Datei ändern, indem Sie die neuen Werte einfach in diese Datei übertragen:
echo "MODE=active" > commonlibrary
Ein Beispiel mit Ihrem Code:
#!/bin/bash
. commonlibrary
case $MODE in
idle)
#do nothing
active)
echo "MODE=newmode" > commonlibrary
Wenn Sie nun mehr als eine Variable in dieser Datei hätten, würde dies ein Problem darstellen. Sie müssten zuerst jede Variable abrufen und dann alle neuen Werte erstellen und sie der Datei hinzufügen. Es gibt viele Möglichkeiten, dies zu tun. Sie können entweder danach recherchieren oder sich eine eigene Methode ausdenken.