Shellskript - Variablen an andere Skripte übergeben
Die Weitergabe von Variablen aus einem Shell Skript an ein anderes ist möglich und macht das Zusammenspiel einzelner Skripte einfacher und damit die Erstellung von komplexeren Abläufen übersichtlicher.
In diesem Beispiel gibt es drei verschiedene Skripte
hauptskript.sh
= Hauptskript, dass die Variablen enthälttest2.sh
= Unterskripttest3.sh
= Unterskript
Hauptskript
hauptskript.sh
#!/usr/bin/env bash
###################################
# Variables
###################################
# Mountpoint = Variable 1
MOUNTPOINT="/mnt/usbbackup/"
# E-Mail Address = Variable 2
EMAIL="email@address.de"
# Log File location and name = Variable 3
LOGFILE="~/test.log"
VARIABLE4="I-am-a-variable"
echo "Logfile = ${LOGFILE}"
###################################
# Call the sub-script
###################################
/bin/bash sub1.sh "${MOUNTPOINT}" "${EMAIL}" ${LOGFILE}
###################################
# Call the sub-script
###################################
/bin/bash sub2.sh "${VARIABLE4}"
Im Hauptskript werden zu Beginn alle Variablen wie gewohnt definiert.
Der Aufruf der Unterskripte erfolgt im hauptskript.sh
mit /bin/bash sub1.sh
jedoch werden die erforderlichen Variablen noch mitgegeben.
An das Unterskript 1 sub1.sh
werden die Variablen "${MOUNTPOINT}" "${EMAIL}" "${LOGFILE}" durchgereicht.
In sub1.sh
lassen sich diese in der richtigen Reihenfolge aufrufen und verwenden.
Das Ansprechen der Variablen erfolgt dort mit $1
… $9
.
Das Skript wird mit sh hauptskript.sh
gestartet.
Unterskript 1 = sub1.sh
Im Unterskript sub1.sh
werden die Variablen durch echo
direkt ausgegeben und im Terminal angezeigt.
#!/usr/bin/env bash
echo "Hello test2.sh script"
echo "MOUNTPOINT = $1"
echo "EMAIL = $2"
echo "Logfile = $3"
Unterskript 2 = sub2.sh
Die VARIABLE4
ist in diesem Unterskript aber $1
, da im Hauptskript der Aufruf mit dem Befehl erfolgt. Die ${VARIABLE4}
steht an erster Stelle.
/bin/bash sub2.sh ${VARIABLE4}
Die Variable steht damit für das Skript an erster Stelle.
#!/usr/bin/env bash
echo "VARIABLE4 = $1"
In meinem Skript imagebackup.sh
verwende ich diese Methode, um die Unterskripte auch mit anderen Hauptskripten zu verwenden.
Da in den Unterskripten keine Variablen definiert sind, sondern die von den Hauptskripten übergeben werden, ist somit eine Mehrfachverwendung für gleiche Aufgaben möglich.
Werden mehrere Hauptskripte verwendet, muss zwingend auf die richtige Reihenfolge der Variablenübergabe geachtet werden.
Grafisch sieht der Prozess so aus:
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️
Source
Photo by George Girnas on Unsplash