dátum összehasonlítás

Egy bash szkriptben megadok egy "hónap, nap, óra, perc" egyedi dátumot.
A szkriptben mindegyik adatnak van egy változója $month, $day stb.
Össze kellene vetnem csak az aktuális hónap, nappal.
actualmonth=$(date +%m)
actualday=$(date +%d)

Hogyan tudnám összehasonlítani egyszerűen?
Ha a "hónap,nap" egyezik, akkor végre kell hajtani egy utasítást. Ha nem, akkor nem.
Én csak egyesével tudom összehasonlítani az "if-then-else" segítségével. Van esetleg egyszerűbb megoldás is?

Hozzászólások

Ha a "hónap,nap" egyezik, akkor végre kell hajtani egy utasítást. Ha nem, akkor nem.
Gondolom, akkor az óra, perc nem kell.
Ha más nem:

actualmonthday=$(date +%m%d)
[ "$month$day" = "$actualmonthday" ] && végrehajtandó_utasítás

Persze a "vezető nullák" legyenek, tehát a február hónap praktikus, ha 02 módon van megadva (konvertálva).

De ha épp FreeBSD-féle date-t használsz: date -v-$((month-1))m -v-$((day-1))d +%m%d értéke 0101, ha a hónap-nap egyezik. Biztosan van valami ilyesmi megoldás a GNU-féle date-ban is.

Az = az string-osszehasonlitas,
Tudom, szándékos volt.
Azért kellenek vezető nullák, hogy pl. az 111 (január 11., november 1.) ne legyen kétértelmű, azaz a teszt úgy működjön, ahogy a topiknyitó szeretné - ekkor a -eq is jó(nak tűnik). Természetesen az összehasonlítás úgy is megoldható, hogy valamilyen elválasztókaraktert használ a hónap és a nap elválasztására - ekkor viszont csak a sztring-összehasonlítás a jó.

Csak nagyon halkan szólok... ha ezt így csinálod:

actualmonth=$(date +%m)
actualday=$(date +%d)

akkor abban van ám egy kis race condition. Ha a szkripted épp akkor fut, amikor január 31-ről február 1-re vált a dátum, lehet hogy január 1-e lesz eltárolva ebben a két változóban, ahhoz hasonlítod a másik értéket.