die unterschiedlichen Shells und das erste Script.

Unterschiedliche Shells

 

Ja, die gibt es und nicht so knapp. Es müssten so an die 10 verschiedene Shells noch existieren und unter Linux funktionieren. Shells für das Verteilen und Ausführen von Jobs auf mehreren Systemen; Job-Control-Funktionen und vieles mehr. Damit das System weiß, mit welcher shell er ein Script ausführen muss, gibt es ein Kürzel, das in jedem Script am Anfang stehen sollte.

 

#!/bin/bash 

Für alle fortgeschrittenen Personen: Man kann damit jeden beliebigen Interpreter verlangen. z.B Perl, Python oder auch PHP. Auch in einer bestimmten Versionen z.B php7

Wir wollen unser bash und der Interpretor liegt im /bin Verzeichnis.

Internal Field Seperator

den hatten wir schon im Teil 2. Jetzt könnten wir als nächste Zeile die ILS-Variable umsetzen. Die shell erkennt von Haus aus die Zeichen blank, tab und new-line als Feldtrennung. Wenn wir also blanks und tabs nicht als Trennzeichen wollen dann können wir sie mit diesem Trick ausschalten.

export ILS=“

damit uns Blanks nicht mehr stören. Erinnert ihr euch noch an unsere ersten Kommandos mit dem grep Befehl? Diesmal erweitern wir die Abfrage etwas und wir wollen sie für immer nutzen.

Das erste Script

Also kommt als 3 Zeile der grep Befehl und wenn wir das ganze in einer Datei speichern, Dann hätten wir unser erstes Script fertig. Nennen wir es telefon.sh; aber es fehlt noch etwas. Die Kennzeichnung, das wir es Exekutieren dürfen. Das erreichen wir mit dem Befehl

chmod 700 telefon.sh

Die Übergabe Variable

Die Shell übergibt mir ein paar Informationen beim Startaufruf, so sind das die Variablen $* $# und $1 bis $…“ $* beinhaltet den gesamten String $1 bis $… jeweils einen Parameter. und $# die Anzahl der Parameter. $0 ist das Programm das ich laufen habe. 

Ok ich gebe zu, es wäre nicht besonders schön, jedes mal das Script zu ändern, wenn ich eine Telefonnummer möchte. Wäre es nicht besser ich, ich würde „telefon.sh rett“ aufrufen und bekomme alle dazu passenden Nummern angezeigt?

Wir starten unseren Editor und ändern unser Script. In der Shell werden die Aufruf-Parameter nacheinander übergeben und zwar in die Variablen $1, $2 $3 usw.

#!/bin/bash
export ILS=""
cat telefonbuch.txt | grep -i "$1"

echo "Ich bin ein tolles Programm mit dem Namen $0 und habe $# Begriffe übergeben bekommen" 

Ich habe da gleich eine Zeile mehr dazugeschmuggelt, die Variable $0 beinhaltet den Programmnamen und die Variable $# die Anzahl der übergebenen Parameter.

Sollte sich euer Programm nicht starten lassen, so liegt es daran das euer Verzeichnis nicht in den erlaubten Path für Programme liegt. Ihr müsst Linux sagen, dass das Programm ausgeführt werden soll. Entweder durch ./telefon.sh oder durch die Eingabe des kompletten Pfad.

Also starten wir das Programm mit

./telefon.sh rett

und bekommen eine Zeile angezeigt. Nun diese 1 Zeile ist zwar richtig aber nicht besonders schön. Und es könnten auch mehre Begriffe und damit Zeilen kommen.

Also verarbeiten wir diese Zeilen und trennen wir sie in einzelne Felder. Dazu haben wir mehre Möglichkeiten: die erste und unschöne, wäre eine Ausgabe mit echo und ein cut auf das Feld das ich möchte. Die elegante und schnellere ist der set-Befehl der mir einen String aufteilt.

#!/bin/bash
export ILS=""
for ZEILE in `cat telefonbuch.txt | grep -i "$1" `
do
   NAME=`echo $ZEILE | cut -f1-1 -d":" ` 
TEL=`echo $ZEILE | cut -f2-2 -d";" `

echo "Name : $NAME Telefonnummer $TEL"
done
echo "Ich bin ein tolles Programm mit dem Namen $0 und habe $# Begriffe übergeben bekommen" 

und schauen wir was jetzt dabei herauskommt.  Natürlich können wir vieles mehr in dieser Datei speichern und dann Abfragen. 

Ich habe in diesem Beispiel, die Vorgehensweise absichtlich so einfach gewählt, weil jeder Befehl einen klaren Vorgang auslöst und übersichtlich wird. 
In den nächsten Teil(en) werden wir uns Bedingungen (IF, test und CASE) und danach die regulare expression anschauen. regexp wie es oft bezeichnet macht die Shell dann so wirklich mächtig, wenn ich z.B. wissen möchte ob der Benutzer nur Ziffern eingeben hat oder die Klein/Großschreibung beherrscht.

Allerdings habe ich mir noch keinen Termin vorgenommen. Viel Spaß bei eurem Telefonbuch.

Wer jetzt eine schöne Oberfläche möchte, dem kann ich den Artikel https://linux-bibel.at/index.php/2025/09/19/whipetail-oder-der-dialog-mit-dem-anwender/
ans Herz legen.  Die beiden miteinander zu kombinieren ist eine nette Beschäftigung für kalte Winterabende. 

..Und ich hoffe, dass ihr einen Lichtschimmer am Ende des Tunnels seht.

Categories:

Tags:

Schreibe einen Kommentar

Noch keine Reaktion

Neue Themen im Forum
Artikel in Heise: Schleswig-Holst …https://www.heise.de/hintergrund/Schleswig-Holstein-Fast-80-Prozen … Weiterlesen
openssl Problem-aes256 war der Fehler danke Weiterlesen
ehemaliger Microsoft-Entwickler: …https://www.golem.de/news/ehemaliger-microsoft-entwickler-windows- … Weiterlesen
Kategorien im Wiki
WIKI-Beiträge des Monates

Die Beiträge des Monates finden Sie im Kalender unter den blau markierten Tageszahlen.

November 2025
M D M D F S S
 12
3456789
10111213141516
17181920212223
24252627282930
Archiv