bash script - prüfen ob Verzeichniss / Datei vorhanden ist

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Adryan
Beiträge: 17
Registriert: 17.11.2010 19:00:30

bash script - prüfen ob Verzeichniss / Datei vorhanden ist

Beitrag von Adryan » 07.12.2010 09:48:02

Hallo,

ich habe die letzten Tage an einem bash script gearbeitet das mir eine installroutine erleichtern soll.
durch viele nützliche Tips hier aus dem Forum ist es auch wirklich super geworden und ich würde es nun sehr gerne erweitern um eine update funktion.

bevor ich mich jedoch an die update funktion machen kann, müßte ich per script prüfen, ob ein verzeichniss vorhanden ist, wenn nein Abbruch, wenn ja, soll ein BackUp Verzeihniss erstellt werden und eine bestimmt Datei in das backup verzeichniss kopiert werden.

Leider bin ich nicht so fit in Linux und das ist auch mein erstes script, könnte mir jemand helfen wie ich diese abfrage am besten umsetze?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von nepos » 07.12.2010 09:56:26

Naja, checken ob ein Verzeichnis da ist in Shell geht so:

Code: Alles auswählen

if [ -d $dir ]; then
...
else
...
fi
Der Check auf Dateien geht analog mit -f. Schau dir mal man test an, da werden die diversen Checks aufgelistet.

uname
Beiträge: 12421
Registriert: 03.06.2008 09:33:02

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von uname » 07.12.2010 10:05:03

@nepos:
Sag mir doch noch mal wann man diese dummen Gänsefüsschen setzen muss. Bei mir sieht das so aus:

Code: Alles auswählen

if [ -z "$MOUNTPOINT" ] ; then

Adryan
Beiträge: 17
Registriert: 17.11.2010 19:00:30

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von Adryan » 07.12.2010 10:36:34

super danke funktioniert perfekt.

leider finde ich nichts zu man test, hast du einen Link für mich?

uname
Beiträge: 12421
Registriert: 03.06.2008 09:33:02

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von uname » 07.12.2010 10:52:00

Code: Alles auswählen

man test
Ist ein Befehl auf der Konsole. Gibt die Syntax von "/usr/bin/test" aus. Und "test" wird im Prinzip in der if-Abfrage genutzt.

dawg
Beiträge: 441
Registriert: 29.12.2008 19:59:00

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von dawg » 07.12.2010 11:41:52

Mit einem [ muss man die Gänsefüsschen setzen, mit [[ nicht.
(muss heisst: gesetzt den Fall man möchte Überraschunge vermeiden).
Glaub ich.

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

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von Meillo » 07.12.2010 13:52:29

uname hat geschrieben:@nepos:
Sag mir doch noch mal wann man diese dummen Gänsefüsschen setzen muss. Bei mir sieht das so aus:

Code: Alles auswählen

if [ -z "$MOUNTPOINT" ] ; then
Wenn du

Code: Alles auswählen

[ -z $foo ]
schreibst und $foo leer ist dann sieht die Shell

Code: Alles auswählen

[ -z ]
, fuerht dieses aus (`[' ist ein Alias fuer test(1)) und test(1) hat kein Argument fuer den -z Operator. Damit weiss test(1) nicht bei was es schauen soll ob es leer ist.

Bei -z und GNU test(1) scheint es trotzdem zu funktionieren, aber das grundsaetzliche Problem bleibt: Ohne Anfuehrungszeichen verschwindet der Variablenwert, mit Anfuehrungzeichen steht ein leerer String da.

Im Normalfall will man Variablen in der Shell immer mit doppelten Anfuehrungszeichen quoten, auch schon wegen Leerzeichen.
Use ed once in a while!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von nepos » 07.12.2010 16:02:31

Ein anderer Grund sind Pfade, die Leerzeichen enthalten. Denn normal sieht die Shell das Space als Trenner für die Argumente an. Auch deshalb sollte man die Variablen bei den Tests usw. immer mit Double-Quotes benutzen.

lisag
Beiträge: 2
Registriert: 01.12.2010 10:45:02
Kontaktdaten:

Re: bash script - prüfen ob Verzeichniss / Datei vorhanden i

Beitrag von lisag » 07.12.2010 16:10:07

/usr/bin/test gibt dir in der Regel das gewünschte Ergebnis zurück.

Antworten