wie schreibt man diesen if-Befehl?

wie schreibt man diesen if-Befehl?

mein Skriptname ist 1. Wenn ich „1 2012 12 12“ eingebe, wird das aktuelle Kalenderdatum angezeigt und wenn ich ein ungültiges Datum wie „1 2323232“ eingebe, bekomme ich einen Fehler. Wie kann ich das also in eine if-Schleife einfügen, die im Fehlerfall „Datum ist ungültig“ zurückgibt?

year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)

cal $day $month $year

if [ $? -eq 0];
        then
        echo "Date is valid"
else
        echo "Date in not valid"
fi

Antwort1

Das funktioniert nicht:

cal $day $month $year

calerwartet nur Monats- und Jahresargumente. Versuchen Sie:

cal $month $year

Wenn Sie eine Meldung drucken möchten, wenn Monat und Jahr ungültig sind, ist keine Schleife erforderlich. Der folgende Code zeigt einen Kalender an, wenn Monat und Jahr gültig sind, oder eine Fehlermeldung, wenn dies nicht der Fall ist:

cal $day $month $year 2>/dev/null || echo "Date is not valid."

Die folgende Anweisung ||wird nur ausgeführt, wenn die vorhergehende Anweisung mit einem Rückgabecode ungleich Null endet (was bedeutet, dass ein Fehler aufgetreten ist).

Beiseite

Diese Zeilen scheinen nicht viel zu bewirken:

year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)

Wenn die Variablen year, month, und day, gültig sind, bewirken diese Zeilen nichts. Wenn es sich nicht um gültige Zahlen handelt, bcwird ein nicht abgefangener Fehler ausgegeben.

verwandte Informationen