Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
plato13
- Beiträge: 19
- Registriert: 21.08.2007 07:31:30
- Wohnort: Kreis Vie
Beitrag
von plato13 » 05.03.2008 07:39:41
Hallo zusammen,
wie kann mit einem Shellscript per IF Anweisung überprüfen ob es einen Ordner gibt?
Habe folgendes probiert doch sagt die Shell mir immer das es den Ordner schon gibt, das ist ja Klase aber dann soll es die den anderen Zweig nehmen.
Code: Alles auswählen
if [ -d $date_month1+$date_year ];
then
bla bla
else
bla bla bla
fi
Danke schonmal für Eure Hilfe
Zuletzt geändert von
plato13 am 05.03.2008 09:23:57, insgesamt 1-mal geändert.
wird noch ausgefüllt. . .
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 05.03.2008 08:00:30
Wie genau heißt denn das Verzeichnis?
Soll es eine Kombination aus beiden Variablen sein?
Weil der test-Operator -d schon richtig ist zur Überprüfung ob es sich um ein Verzeichnis handelt.
Oh, yeah!
-
plato13
- Beiträge: 19
- Registriert: 21.08.2007 07:31:30
- Wohnort: Kreis Vie
Beitrag
von plato13 » 05.03.2008 08:19:22
Hallo Duff,
ja der Ordner besteht aus den zwei Variablen einmal Monat in Zahl und aktuelle Jahreszahl
der Ordner liegt unter /var/log/day/log mit dem Namen 032008 der Wurde auch am Monatsanfang von dem Script angelegt. . .
Gruß
wird noch ausgefüllt. . .
-
Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Beitrag
von Savar » 05.03.2008 08:29:49
ich versteh dein Problem nicht.. "es soll den anderen Zweig nehmen".. was meinst du?
1. was funktioniert nicht
2. was passiert bisher
3. wie soll es funktionieren?
und als Tipp:
(die " sind immer besser bei sowas)
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 05.03.2008 08:31:35
Wenn das Verzeichnis so heißt wie du es geschrieben hast (032008), dann sollte die Überprüfung (im korrekten Verzeichnis voraus gesetzt) so lauten:
Code: Alles auswählen
date_month1=`date +'%m'`
date_year=`date +'%Y'`
if [ -d $date_month1$date_year ]
then
echo "Verzeichnis existiert"
else
echo "Else-Zweig"
fi
Oh, yeah!
-
plato13
- Beiträge: 19
- Registriert: 21.08.2007 07:31:30
- Wohnort: Kreis Vie
Beitrag
von plato13 » 05.03.2008 08:45:44
Also so sieht das Script aus und da ja das Verzeichnis schon da ist, soll natürlich nicht die else Anweisung durchlaufen werden was er aber laut Fehlermeldung macht. . .
Code: Alles auswählen
directory_name='/var/log/'
directory_name1='/var/log/daylog/'
file_name='xferlog'
date_day=$(date +%d)
date_month=$(date +%b)
date_month1=$(date +%m)
date_year=$(date +%Y)
yesterday=$(( $date_day -1 ))
YESTERDAY=$(date -d"yesterday" +%d)
# Null abschneiden falls vorhanden
YESTERDAY=${YESTERDAY##*0}
cd $directory_name1
if [ -d $date_month1+$date_year ]; then
cd $directory_name
cat $file_name |grep "$date_month *$YESTERDAY" |awk '{print $14, $2, $3, $4, $7, $8, $12}' >/var/log/daylog/$date_month1+$date_year/daylog$YESTERDAY.txt;
else
mkdir $date_month1$date_year
cd $directory_name
cat $file_name |grep "$date_month *$YESTERDAY" |awk '{print $14, $2, $3, $4, $7, $8, $12}' >/var/log/daylog/$date_month1$date_year/daylog$YESTERDAY.txt;
fi
Weiß nicht wo der Fehler liegt ?? Könnt Ihr mir da weiterhelfen. . .
wird noch ausgefüllt. . .
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 05.03.2008 09:04:20
Wie ich schon oben gepostet habe. Wieso verwendest du ein "+"-Zeichen zwischen den beiden Variablen?
Oh, yeah!
-
plato13
- Beiträge: 19
- Registriert: 21.08.2007 07:31:30
- Wohnort: Kreis Vie
Beitrag
von plato13 » 05.03.2008 09:23:30
So nun klappt es und die Anweisung wird richtig durchlaufen.
Lag am "+" zeichen, weiss auch nicht was mich da geritten hat. . .
Vielen Dank an Alle für Eure Hilfe. . .
wird noch ausgefüllt. . .
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 05.03.2008 09:43:34
Darauf wollte ich dich ja bei diesem Beitrag schon aufmerksam gemacht haben
...aber hauptsache es funktioniert nun
Duff hat geschrieben:Wenn das Verzeichnis so heißt wie du es geschrieben hast (032008), dann sollte die Überprüfung (im korrekten Verzeichnis voraus gesetzt) so lauten:
Code: Alles auswählen
date_month1=`date +'%m'`
date_year=`date +'%Y'`
if [ -d $date_month1$date_year ]
then
echo "Verzeichnis existiert"
else
echo "Else-Zweig"
fi
Oh, yeah!