Zum Inhalt

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ält
  • test2.sh = Unterskript
  • test3.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:

Shellskript Variable an anderes Skript übergeben

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source

Photo by George Girnas on Unsplash