Die Weitergabe von Variablen aus einem Shellskript 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.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
Photo by George Girnas on Unsplash

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey, Synology und openmediavault und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.