GNU/Linux >> Linux Esercitazione >  >> Linux

Confronto di date in Bash

Puoi confrontare lessicograficamente con il costrutto condizionale [[ ]] in questo modo:

[[ "2014-12-01T21:34:03+02:00" < "2014-12-01T21:35:03+02:00" ]]

Dall'uomo:

[[espressione]]
Restituisce uno stato di 0 o 1 a seconda della valutazione dell'espressione condizionale expression.

Nuovo aggiornamento:

Se devi confrontare orari con fusi orari diversi, puoi prima convertire questi orari in questo modo:

get_date() {
    date --utc --date="$1" +"%Y-%m-%d %H:%M:%S"
}

$ get_date "2014-12-01T14:00:00+00:00"
2014-12-01 14:00:00

$ get_date "2014-12-01T12:00:00-05:00"
2014-12-01 17:00:00

$ [[ $(get_date "2014-12-01T14:00:00+00:00") < $(get_date "2014-12-01T12:00:00-05:00") ]] && echo it works
it works

Un'opzione potrebbe essere quella di convertire la data nel numero di secondi trascorsi dall'epoca UNIX:

date -d "2014-12-01T21:34:03+02:00" +%s

Puoi quindi confrontare questo numero intero con un'altra data che è stata elaborata allo stesso modo:

(( $(date -d "2014-12-01T21:34:03+02:00" +%s) < $(date -d "2014-12-01T21:35:03+02:00" +%s) ))

Il (( )) la sintassi viene utilizzata per creare un contesto aritmetico mentre confrontiamo due numeri. Puoi anche usare il più generico [ ${x} -lt ${y} ] style syntax se la portabilità è un problema.

Un vantaggio di farlo in questo modo è che date comprende una varietà di formati, ad esempio
date -d "next year" +%s . Inoltre, date comprende i fusi orari, quindi può gestire correttamente i confronti tra coppie di date in cui il fuso orario è diverso.

Tuttavia, se nessuno di questi problemi ti preoccupa, allora sceglierei la soluzione di j.a..


Linux
  1. Ottieni mtime di un file specifico usando Bash?

  2. Converti i formati di data in bash

  3. controlla se l'argomento è una data valida nella shell bash

  4. Come ottenere la data/ora di creazione del file in Bash/Debian?

  5. Bash - Comando data e spazio

Dichiarazione del caso Bash

Comando Data in Linux

Bash if..else Statement

Matrici Bash

Bash Shebang

Come utilizzare il comando Date negli script Bash in Linux