Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

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
Geschrieben (bearbeitet)

super, das funktioniert jetzt soweit, danke. (zum schluss muss auch ein endif und kein fi hin)

nun hat er nur noch probleme mit meinem NEWNUM und NEWNUM2. kann mir da vielleciht noch wer weiterhelfen?

Bearbeitet von littlebunny87
Geschrieben

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?

Geschrieben

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?

Geschrieben

#!/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?

  • 1 Jahr später...
Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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