Bash date miteinander vergleichen -> Syntaxfehler im Ausruck

Executor55

Lt. Commander
Registriert
Okt. 2004
Beiträge
1.699
Hi
ich habe folgenden code der leider nicht funktioniert:

Code:
#!/bin/bash
declare -A QUEUE
name="key1"
QUEUE[$name]=$(date)
...
if [[ -n "${QUEUE[$name]}" ]];then
    if [[ $(date -d 'now - 60 seconds') -lt ${QUEUE[$name]} ]];then
        echo "Schlüssel in QUEUE ist älter als 60 Sekunden"
    fi
fi
...

Bei diesem Code bekomme ich folgenden Fehler:
./script.sh: Zeile 7: [[: Sun Dec 22 14:35:39 CET 2019: Syntaxfehler im Ausdruck. (Fehlerverursachendes Zeichen ist \"Dec 22 14:35:39 CET 2019\").

was genau mache ich falsch?
Danke für Hilfestellung
 
date -d 'now - 60 seconds' liefert einen string zurück, z.b. Sun 22 Dec 2019 02:54:18 PM CET. wie willst du den mit "kleiner als" (-lt) vergleichen?

du müsstest einen timestamp verwenden: date -d 'now - 60 seconds' +%s liefert dann 1577023074 - die zahl kannst du dann mittels "lt" vergleichen.
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Danke, irgendwann sieht man den Wald vor lauter Bäumen nicht mehr
funktioniert jetzt:

Code:
#!/bin/bash
declare -A QUEUE
name="key1"
QUEUE[$name]=$(date +%s)
...
if [[ -n "${QUEUE[$name]}" ]];then
    if [[ $(date -d "now - 60 seconds" +%s) -gt ${QUEUE[$name]} ]];then
        echo "Schlüssel in QUEUE ist älter als 60 Sekunden"
    fi
fi
...
 
Zurück
Oben