Was ist der richtige Ausdruck, um das richtige Ergebnis zu erzielen?

Was ist der richtige Ausdruck, um das richtige Ergebnis zu erzielen?

Dieses Skript verwendet eine CSV-Datei und durchläuft sie, um ein MD-Array zu erstellen. Anschließend nimmt es die dritte Spalte und vergleicht jede Variable, um festzustellen, ob sie größer als 64 ist. Wenn ich die Zahl 64 verwende, funktioniert es, aber nicht, wenn ich eine deklarierte Konstante mit dem Namen MAX_AGE verwende.

Unten sehen Sie ein Bild des Skripts mit -gt MAX_AGE Skript mit deklarierter Konstante MAX_AGE

Unten sehen Sie den Fehler bei der Verwendung des obigen Skripts Bildbeschreibung hier eingeben

Ich weiß, die Antwort ist wahrscheinlich ganz einfach …

Antwort1

-gtwird zum Vergleichen von Zahlen und nicht von Zeichenfolgen verwendet. Daher müssen Sie Folgendes ersetzen:

[ ${ages[i]} -gt MAX_AGE ]

mit:

[ ${ages[i]} -gt $MAX_AGE ]

Der Grund hierfür ist, dass es MAX_AGEsich um eine Zeichenfolge handelt. Sie können sie nicht als Zahl verwenden.

$MAX_AGEist der Wert der Variablen MAX_AGE. Sie können dies mit einer Zahl vergleichen, solange dieser Wert als Ganzzahl interpretiert werden kann.

Um optimale Ergebnisse bei der Verwendung zu erzielen [...], sollten Variablen in doppelte Anführungszeichen gesetzt werden:

[ "${ages[i]}" -gt "$MAX_AGE" ]

verwandte Informationen