Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
TEIL I: Einstieg in Linux
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
TEIL II: Grundlagen
5 Kernel
6 Grundlagen aus Anwendersicht
TEIL III: Die Shell
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
TEIL IV: System- & Netzwerkadministration
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP & Co.
20 DNS-Server
21 Secure Shell
TEIL V: Die grafische Oberfläche
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
TEIL VI: Systeminterna
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
TEIL VII: Programmierung und Sicherheit
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in Computersicherheit
33 Netzwerksicherheit überwachen
TEIL VIII: Anhang
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Buch-DVDs
F Glossar
G Literatur
Stichwort
Ihre Meinung?

Spacer
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
Rheinwerk Computing
1282 S., 5., aktualisierte Auflage 2012, geb., mit 2 DVDs
49,90 Euro, ISBN 978-3-8362-1822-1
Pfeil 11 Shellskriptprogrammierung mit der bash
Pfeil 11.1 Das erste Shellskript
Pfeil 11.2 Kommentare
Pfeil 11.3 Rechnen in der Shell
Pfeil 11.3.1 Integer-Variablen
Pfeil 11.3.2 expr
Pfeil 11.3.3 Den bc nutzen
Pfeil 11.4 Arrays
Pfeil 11.5 Bedingte Anweisungen
Pfeil 11.5.1 if
Pfeil 11.5.2 case
Pfeil 11.6 Schleifen
Pfeil 11.6.1 while
Pfeil 11.6.2 until
Pfeil 11.6.3 for
Pfeil 11.6.4 seq – Schleifen mit Aufzählungen
Pfeil 11.7 Menüs mit select
Pfeil 11.8 break
Pfeil 11.9 Funktionen
Pfeil 11.9.1 Eine simple Funktion
Pfeil 11.9.2 Funktionsparameter
Pfeil 11.9.3 Rückgabewerte
Pfeil 11.10 Temporäre Dateien
Pfeil 11.11 Syslog-Meldungen via Shell
Pfeil 11.12 Pausen in Shellskripte einbauen
Pfeil 11.13 Zusammenfassung
Pfeil 11.14 Aufgaben

Rheinwerk Computing - Zum Seitenanfang

11.6 SchleifenZur nächsten Überschrift

Auch in der Shell stehen Ihnen verschiedene Schleifen zur Verfügung. Die for- und die while-Schleife kennen Sie ja bereits von der Skriptsprache awk, die in Abschnitt abschnitt_awk behandelt wurde. Neu hinzu kommt die until-Schleife, die eine Art Negation der while-Schleife darstellt, doch dazu später mehr. Zunächst werden wir uns mit der bereits bekannten while-Schleife beschäftigen, damit der Umstieg von awk- auf Shell-Schleifen möglichst einfach gelingt.


Rheinwerk Computing - Zum Seitenanfang

11.6.1 whileZur nächsten ÜberschriftZur vorigen Überschrift

Die while-Schleife setzt sich aus einer bedingten Anweisung, wie sie bereits von if bekannt ist, und einem Anweisungsblock zusammen. Dieser wird wird durch das Schlüsselwort do eingeleitet und durch done beendet.

Listing 11.28 Aufbau der while-Anweisung

while [ Bedingung ]
do
Anweisung1
Anweisung2
Anweisung3
done

Auch hier lässt sich eine übersichtlichere Schreibweise durch Gliedern mit Semikola erreichen:

Listing 11.29 Mehr Übersicht

while [ Bedingung ]; do
AnweisungA
AnweisungB
AnweisungC
done

Endlosschleifen

Auch in der Shelllassen sich können Endlosschleifen realisieren. Dazu muss nur eine ständig wahre Bedingung übergeben werden – beispielsweise 1, true, "a" oder auch der simple Doppelpunkt:

Listing 11.30 Ein Beispiel

while :; do
echo "test"; sleep 2; done

[zB]Mit while kann man nun bereits simple Menüs für Shellskripts erstellen. [Fn. Später werden Sie die select-Anweisung kennenlernen, die speziell für das Erstellen von Auswahlmenüs in Shellskripten gedacht ist.] Dazu lassen wir bei jedem Schleifendurchlauf erneut einen Wert durch read einlesen und vergleichen diesen mit vorgegebenen Werten.

Listing 11.31 Ein Menü mit while

VALUE=""
while [ "$VALUE" != "ende" ]; do
clear
echo "Auswahlmenü:"
echo
echo "Eingabe Auswirkung"
echo "benutzer: zeigt die eingeloggten Benutzer an"
echo "prozesse: zeigt die aktuellen Prozesse an"
echo "laufzeit: zeigt die Laufzeit des Systems an"
echo "ende: beendet das Skript"

echo "Ihre Auswahl: "
read VALUE

if [ "$VALUE" = "benutzer" ]; then
w
elif [ "$VALUE" = "prozesse" ]; then
ps
elif [ "$VALUE" = "laufzeit" ]; then
uptime|awk -F, '{print $1}'
elif [ "$VALUE" = "ende" ]; then
echo 'Bis bald!'
else
echo "Ihre Eingabe wird nicht unterstützt."
fi

echo "Drücken Sie Return, um fortzufahren."
read garbage
done

Rheinwerk Computing - Zum Seitenanfang

11.6.2 untilZur nächsten ÜberschriftZur vorigen Überschrift

Zu den bereits bekannten Schleifen kommt nun noch die until-Schleife hinzu. Diese neue Schleife kann als Negation der while-Schleife verstanden werden. Der Anweisungsblock der until-Schleife wird so lange ausgeführt, wie die Bedingung nicht erfüllt ist. Man kann praktisch die until-Schleife mit einer while !-Schleife gleichsetzen:

Listing 11.32 until und while !

while [ ! 1 ]; do echo Test; done
until [ 1 ]; do echo Test; done
# oder noch kürzer:
until :; do echo Test; done

Rheinwerk Computing - Zum Seitenanfang

11.6.3 forZur nächsten ÜberschriftZur vorigen Überschrift

Die letzte Schleife in diesem Abschnitt ist die ebenfalls in ähnlicher Form aus awk bekannte for-Schleife. Der Aufbau dieser Schleife gestaltet sich wie folgt:

Listing 11.33 for-Syntax

for VAR in WERT1 WERT2 WERT3
do
Anweisung1
Anweisung2
done

for arbeitet einen Anweisungsblock mit jedem angegebenen Wert einmal durch. Dieser Wert wird während des Durchlaufens des Anweisungsblocks der Variable VAR zugewiesen, mit der die Anweisungen arbeiten können. Der Anweisungsblock wird, wie bei der while-Schleife, durch do eingeleitet und mit done beendet.

[zB]Auch hierzu ein Beispiel, um Ihnen die Anwendung der Schleife möglichst leicht verständlich zu machen. Wir nehmen dabei als Werte alle TeX-Dateien in einem Verzeichnis an (in diesem Fall das Verzeichnis mit unserem Buch), die wir an die Variable DATEI zuweisen. Für jede Datei soll die Anzahl der darin enthaltenen Wörter ausgegeben werden, und zusätzlich soll die Gesamtzahl der Wörter summiert und nach Beendigung der Schleife ausgegeben werden.

Listing 11.34 Beispiel: for-Schleife

#!/bin/bash

typeset -i WORDS=0

for DATEI in *.tex
do
NWORDS=`wc -w $DATEI| awk '{print $1}'`
echo "Datei $DATEI beinhaltet $NWORDS Woerter."

WORDS=WORDS+NWORDS
done

echo
echo "Woerter gesamt: $WORDS"

Wenn wir dieses Skript nun ausführen, erhalten wir die folgende Ausgabe:

Listing 11.35 Anzahl der Wörter in unserem Buch

$ ./wordcount
Datei anhg_csh.tex beinhaltet 2461 Woerter.
Datei anhg_dvd.tex beinhaltet 440 Woerter.
Datei anhg_install.tex beinhaltet 3757 Woerter.
Datei anhg_komref.tex beinhaltet 8349 Woerter.
Datei anhg_loesungen.tex beinhaltet 5732 Woerter.
Datei anhg_misc.tex beinhaltet 696 Woerter.
Datei buch.tex beinhaltet 210 Woerter.
Datei glossar.tex beinhaltet 837 Woerter.
Datei kap01_kernel.tex beinhaltet 18220 Woerter.
Datei kap03_einstieg.tex beinhaltet 9067 Woerter.
Datei kap04_2_regex.tex beinhaltet 9800 Woerter.
Datei kap04_3_tools.tex beinhaltet 4514 Woerter.
Datei kap04_4_skripting.tex beinhaltet 5347 Woerter.
Datei kap04_editoren.tex beinhaltet 5029 Woerter.
Datei kap04_shell.tex beinhaltet 10668 Woerter.
Datei kap05_2.tex beinhaltet 26118 Woerter.
Datei kap05_sysadmin.tex beinhaltet 9490 Woerter.
Datei kap07_dienste_dns.tex beinhaltet 2602 Woerter.
Datei kap10_kdegnomewm.tex beinhaltet 4025 Woerter.
Datei kap13_spiele.tex beinhaltet 7810 Woerter.
Datei kap_boot.tex beinhaltet 8999 Woerter.
Datei kap_einleitung.tex beinhaltet 5955 Woerter.
Datei kap_erste_schritte.tex beinhaltet 2539 Woerter.
Datei kap_install_vorbereitung.tex beinhaltet 5137 Woerter.
Datei kapinterna_filesystem.tex beinhaltet 8615 Woerter.
Datei kapinterna_prozesse.tex beinhaltet 8777 Woerter.
Datei kap_lamp.tex beinhaltet 5862 Woerter.
Datei kap_mailserver.tex beinhaltet 4739 Woerter.
Datei kap_netz_clients.tex beinhaltet 5456 Woerter.
Datei kap_netz_dienste.tex beinhaltet 7175 Woerter.
Datei kap_netzsicherheit_ueberwachen.tex beinhaltet 10801 Woerter.
Datei kap_netzwerk.tex beinhaltet 10850 Woerter.
Datei kap_progsprachen.tex beinhaltet 17432 Woerter.
Datei kap_sicherheit.tex beinhaltet 14667 Woerter.
Datei kap_ssh.tex beinhaltet 3486 Woerter.
Datei kap_virtualmach.tex beinhaltet 5512 Woerter.
Datei kap_workstation.tex beinhaltet 3719 Woerter.
Datei kap_x11apps.tex beinhaltet 5532 Woerter.
Datei kap_x11.tex beinhaltet 6209 Woerter.
Datei kapxx_software.tex beinhaltet 13918 Woerter.
Datei k_vorwort.tex beinhaltet 4950 Woerter.
Datei literatur.tex beinhaltet 799 Woerter.
Datei newIcons.tex beinhaltet 174 Woerter.
Datei new-macros.tex beinhaltet 110 Woerter.
Datei trennung.tex beinhaltet 224 Woerter.
Datei using-icons.tex beinhaltet 511 Woerter.

Woerter gesamt: 297320

[»] Sie können als Wertliste für for auch eine Kommandosubstitution übergeben. Sucht ein Skript beispielsweise alle Codedump-Dateien des Systems, so kann ein find-Aufruf für die Kommandosubstitution verwendet werden:

Listing 11.36 for mit Kommandosubstitution

for DATEI in `find / -name *core 2>/dev/null`
do
echo "Lösche Datei $DATEI..."
rm $DATEI
done

Rheinwerk Computing - Zum Seitenanfang

11.6.4 seq – Schleifen mit AufzählungenZur vorigen Überschrift

Manchmal kommt es vor, dass man eine Schleife über eine Ziffernfolge durchlaufen möchte oder aus irgendeinem anderen Grund eine Ziffernfolge benötigt. Dafür wurde das Programm seq geschrieben, das hier nur kurz angesprochen werden soll. Eine Parameterliste für seq finden Sie in der Kommandoreferenz.

Soll seq beispielsweise alle Zahlen von 1 bis 10 auflisten, dann ist dies ganz einfach. Übergeben Sie den Start- und Endwert:

Listing 11.37 seq in Aktion

$ seq 1 10
1
2
3
4
5
6
7
8
9
10

for und seq

Möchte man seq nun in eine Schleife packen, so nutzt man am besten die Kommandosubstitution. Will man etwa einen bestimmten Satz Dateien löschen, dann wäre folgendes eine Möglichkeit:

Listing 11.38 seq in einer for-Schleife

$ for i in `seq 1 10`; do
rm "file$i"
done


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Raspberry Pi






 Raspberry Pi


Zum Katalog: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Katalog: Roboter bauen mit Arduino






 Roboter bauen
 mit Arduino


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de