Shellscript Basics

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
CyberDobby
Beiträge: 10
Registriert: 09.08.2008 15:57:28

Shellscript Basics

Beitrag von CyberDobby » 05.01.2009 13:21:20

Hihoo!

Da ich gerade eben erst beginne, mich mit shellscripts zu befassen, habe ich da ein paar Fragen:

1) welche Literatur könnt Ihr empfehlen?
2) wie kann ich feststellen, ob z.B. ein mount-Befehl erfolgreich war?
3) wie kann ich feststellen, ob das device /dev/sdg1 vorhanden ist und ob es gemountet ist?

Mein erstes Shellscript soll folgendes tun:

Feststellen, ob eine USB-Festplatte vorhanden ist, diese nötigenfalls mounten und dann ein backup drauf machen. Zum Schluss kommt dann ein umount.
Habe schon ein paar Sachen probiert (dmesg, test, grep, ...) aber noch nichts brauchbares gefunden.

Bin halt doch noch ein Linux-Neuling auf seinen ersten Schritten.
Beim Durchsuchen der Foren habe ich jetzt auch nichts gefunden, was mir weiter hilft.

Grüße,

CyberDobby

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Shellscript Basics

Beitrag von Duff » 05.01.2009 13:37:44

zu 1) Wenn du dir ein Buch anschaffen möchtest, kann ich dir http://www.galileocomputing.de/katalog/ ... 31xE4kAi5Iempfehlen. Ich habe zwar noch eine etwas älter Auflage vor ein paar Jahren gekauft, aber fand das Buch an sich sehr gut.

zu 2 und 3) Du kannst dir die gemounteten Verzeichnisse z.B. mit dem Befehl mount anzeigen lassen.
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shellscript Basics

Beitrag von Meillo » 05.01.2009 13:48:16

CyberDobby hat geschrieben:2) wie kann ich feststellen, ob z.B. ein mount-Befehl erfolgreich war?
Wenn ein Befehl keine Fehler wirft, war er erfolgreich. Du kannst das mit $? prüfen:

Code: Alles auswählen

mount /dev/aaa /mnt/aaa
if [ $? -eq 0 ] ; then
  echo "mount went well"
else
  echo "mount failed"
fi
3) wie kann ich feststellen, ob das device /dev/sdg1 vorhanden ist
natürlich mit

Code: Alles auswählen

ls /dev/sdg1
und ob es gemountet ist?
Wie Duff schon sagte: mit `mount':

Code: Alles auswählen

mount | grep '/dev/sdg1'
Mein erstes Shellscript soll folgendes tun:

Feststellen, ob eine USB-Festplatte vorhanden ist, diese nötigenfalls mounten und dann ein backup drauf machen. Zum Schluss kommt dann ein umount.
Habe schon ein paar Sachen probiert (dmesg, test, grep, ...) aber noch nichts brauchbares gefunden.
Das könnte so ablaufen:
1) mit `ls' prüfen ob das Device vorhanden ist (exit falls nicht vorhanden)
2) es mounten (falls es schon gemountet ist, kommt automatisch ein Fehler, und es passiert nichts)
3) das Backup machen
4) unmounten

Wichtig werden sein: if, test, und Kommandosubstitution (mit Backticks)

Versuche mal und poste deine Versuche. Aber nicht sofort ... erst ein bisschen Zeit reinhängen ;-)



EDIT:
Am Anfang reichen die vielen, frei erhältlichen, Shell-Scripting Tutorials überall im Internet aus. Einfach mal danach suchen.
Sonst ist http://books.google.com/books?id=jO-iKw ... ell+script bestimmt auch nicht schlecht (hab nicht genauer rein geschaut).
http://books.google.com/books?id=dzBCH3 ... ell+script ist sehr empfehlenswert, wenn du wissen willst wie es _tatsächlich_ funktioniert -- von diesem Buch habe ich mehr über Shell-Scripting gelernt, als von jedem anderen. (Aber es ist eher für Fortgeschrittene.)
Use ed once in a while!

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Shellscript Basics

Beitrag von GoKi » 05.01.2009 14:07:24

Meillo hat geschrieben:
3) wie kann ich feststellen, ob das device /dev/sdg1 vorhanden ist
natürlich mit

Code: Alles auswählen

ls /dev/sdg1
Da lohnt auch ein Blick in

Code: Alles auswählen

man test
oder der entsprechende Abschnitt der bash manpage.
MfG GoKi
:wq

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shellscript Basics

Beitrag von Meillo » 05.01.2009 15:08:09

GoKi hat geschrieben:
Meillo hat geschrieben:
3) wie kann ich feststellen, ob das device /dev/sdg1 vorhanden ist
natürlich mit

Code: Alles auswählen

ls /dev/sdg1
Da lohnt auch ein Blick in

Code: Alles auswählen

man test
oder der entsprechende Abschnitt der bash manpage.
Natürlich! (ich glaube das waren schon zu viele ``natürlich'' für heute :-/ )
... mein Blickwinkel war zu sehr der des interaktiven Users, als der des Shell-Scripts. :roll:
Use ed once in a while!

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Shellscript Basics

Beitrag von Lohengrin » 05.01.2009 17:40:21

Harry, hol schon mal das Rasiermesser!

CyberDobby
Beiträge: 10
Registriert: 09.08.2008 15:57:28

Re: Shellscript Basics

Beitrag von CyberDobby » 08.01.2009 11:43:14

Vielen Dank für die ausführlichen Antworten.

Das "$?" war der Hit - jetzt passt das Script und tut tatsächlich was ich will.

CyberDobby

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Shellscript Basics

Beitrag von ThorstenS » 08.01.2009 11:59:19

In meiner .bashrc habe ich am Anfang ein $? stehen, so wie hier:

Code: Alles auswählen

PS1='$? ${debian_chroot:+($debian_chroot)} ...
Damit sehe ich anhand des returncodes immer, ob ein Befehl erfolgreich war (dann steht dort eine 0) oder etwas schief lief (meist eine 1, kann aber abweichen).

Beispiel:

Code: Alles auswählen

0 thorsten@box:~$ [ -f ".bashrc" ]
0 thorsten@box:~$ [ -f ".bashrc_fehlt" ]
1 thorsten@box:~$ 

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Shellscript Basics

Beitrag von Lohengrin » 08.01.2009 13:11:42

ThorstenS hat geschrieben:In meiner .bashrc habe ich am Anfang ein $? stehen,
Gute Idee. Danke.
Harry, hol schon mal das Rasiermesser!

Antworten