Zum Inhalt springen

Shell Script mit if-Anweisung


littlebunny87

Empfohlene Beiträge

Guten Morgen,

ich habe im Moment ein Projekt, bei dem ich ein csh Skript schreiben soll, dass gewisse Zahlen ausliest und ändert. Dazu wollte ich in einer if-Anweisung einen Vergleich amchen, aber ich bekomme leider immer eine Fehlermeldung und hoffe, dass mir jemand von euch sagen kann, wo mein Fehler liegt.

Hier der Code meiner if-Anweisung:

# wenn neues gleich altes Datum

if [ $OLDDAT == $CURDAT ] ; then

# neue Nummer gleich alte Nummer Plus 1

NEWNUM = `expr $OLDNUM + 1 | cut -c 9-`

echo $NEWNUM

# wenn neues ungleich altes Datum

else

# neue Nummer gleich 00

NEWNUM = "00"

echo $NEWNUM

fi

Fehlermeldung: if: Expression Syntax.

Ich denke, dass es sich um die erste Zeile if [ $OLDDAT == $CURDAT ] ; then handelt. das da iwo ein Fehler mit dem Vergleich oder so vorliegt

Bearbeitet von littlebunny87
Link zu diesem Kommentar
Auf anderen Seiten teilen

Das komplette programm sieht so aus:

#!/bin/csh


set DATEINAME = test123.txt


# aktuelles Datum

set CURDAT = "`date '+%Y%m%d'`"

echo $CURDAT


# gesamte alte Zahlenkette

set OLDNUM = `cat $DATEINAME | grep 20 | awk '{print $1}'`

echo $OLDNUM


# altes Datum 

set OLDDAT = `echo $OLDNUM | cut -c -8`

echo $OLDDAT


# wenn neues gleich altes Datum

if ( $OLDDAT == $CURDAT ) then

# neue Nummer gleich alte Nummer Plus 1

NEWNUM = `expr $OLDNUM + 1 | cut -c 9-`

echo $NEWNUM

# wenn neues ungleich altes Datum

else

# neue Nummer gleich 00

NEWNUM = "00"

echo $NEWNUM

endif

# ersetze

cat test123.txt | sed "s/20......../$CURDAT$NEWNUM/" > test123.txt

Fehler:

NEWNUM: Command not found

NEWNUM: Undefined Variable

Muss ich die schon vor der if-Anweisung definieren? und wenn ja, wie? Würde ja heißen ich brauch ne NEWNUM und ne NEWNUM2. Und wie rufe ich die dann in der if-Anweisung auf?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Muss ich die schon vor der if-Anweisung definieren? und wenn ja, wie? Würde ja heißen ich brauch ne NEWNUM und ne NEWNUM2. Und wie rufe ich die dann in der if-Anweisung auf?

Prinzipiell würde ich anderst scripten. Immer ein Stückchen und dann schauen, ob es geht und dann weiter machen. Ansonsten macht debugging kein Spass. Zu deinem Problem ... muss man nicht die Variable mit "set" vorher definieren? Hast du das gemacht bei NEWNUM?

Link zu diesem Kommentar
Auf anderen Seiten teilen

#!/bin/csh


set DATEINAME = test123.txt


# aktuelles Datum

set CURDAT = "`date '+%Y%m%d'`"

echo $CURDAT


# gesamte alte Zahlenkette

set OLDNUM = `cat $DATEINAME | grep 20 | awk '{print $1}'`

echo $OLDNUM


# altes Datum 

set OLDDAT = `echo $OLDNUM | cut -c -8`

echo $OLDDAT


set NEWNUM = "00"

# wenn neues gleich altes Datum

if ( $OLDDAT == $CURDAT ) then

# neue Nummer gleich alte Nummer Plus 1

NEWNUM = `expr $OLDNUM + 1 | cut -c 9-`

endif

echo $NEWNUM

# ersetze

cat test123.txt | sed "s/20......../$CURDAT$NEWNUM/" > test123.txt

Geht das so nicht? Und was ist eine If-Schleife?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Jahr später...

ich arbeite auf einer kornshell und habe das problem, dass ich mehrere anweisungen nicht in ein if bzw. then packen kann, das rafft der nicht. beispiel:

if [ "$errors" = 0 ]; then

print "$timestamp : Alle Systeme verfügbar" >> $OUTPUT_FILE2

elif [ "$errors" > 0 ]; then

print "$errors2" >> $ERROR_FILE

print "$timestamp : Nicht alle Systeme verfügbar" >> $OUTPUT_FILE2

fi

der führt das zweite print immer aus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...