dátum összehasonlítás

 ( Nextra | 2019. február 9., szombat - 16:47 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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.

Igen közben én is ugyanerre jutottam, de több szem többet lát...
Mindenesetre köszi.

Idézet:
[ "$month$day" = "$actualmonthday" ]

Az = az string-osszehasonlitas, neked az -eq a baratod:

[ 01 -eq 1 ] && echo "Equal."
Equal.

[ "01" = "1" ] && echo "Equal."

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ó.

[ -z ${actualmonthday##${monthday}} ] && ugyanaz

... lol

Ötletes :)

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.