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
Unten sehen Sie den Fehler bei der Verwendung des obigen Skripts
Ich weiß, die Antwort ist wahrscheinlich ganz einfach …
Antwort1
-gt
wird 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_AGE
sich um eine Zeichenfolge handelt. Sie können sie nicht als Zahl verwenden.
$MAX_AGE
ist 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" ]