[gelöst]Shell Script bash Ob Ordner da ist?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
plato13
Beiträge: 19
Registriert: 21.08.2007 07:31:30
Wohnort: Kreis Vie

[gelöst]Shell Script bash Ob Ordner da ist?

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. . .

Benutzeravatar
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!

Benutzeravatar
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. . .

Benutzeravatar
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:

Code: Alles auswählen

if [ -d "$date_month1+$date_year"]
(die " sind immer besser bei sowas)
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
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!

Benutzeravatar
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. . .

Benutzeravatar
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!

Benutzeravatar
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. . .

Benutzeravatar
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 :lol:
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!

Antworten