Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

das hab ich schon weggelassen und hatte trotzdem den selben Fehler

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

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?

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?

pass auf, wenn ich die Variable vor der if Anweisung deklariere und ihr die werte zuweise, wie rufe ich das dann in der ifschleife auf?

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

sry, meinte if-Anweisung

ähm... da überspringt er anscheinend iwie die if-Anweisung. zumindest macht er net das was drinne steht

Hi,

warum nicht mit let?

zahl=0

let zahl=$zahl+1

echo $zahl

-> 1

weil 1. die zahl 2stellig sein muss und 2. brauche ich 2 verschiedene Fälle für das ganze

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.