a) Abban a now=... sorban te biztoan így akarod az idézőjeleket használni? (Amúgy mivel a date - elvben - csak egész számot adhat vissza ennél az opciónál, a "külső" idézőjeleket simán elhagyhatod.)
b) ha "declare -i" helyett "typeset -i" lenne (vagy pláne sőt "integer" - oppsz, ez utóbbi bash-nál nem gyári alias; grrr), akkor nem csak a bash enné meg, hanem egyéb shellek - hint: ksh - is. Ráadásul sok jelentősége nincs, hisz elvben csak számokat adhatsz értékül mind a két változónak, ellenben műveletet nem végzel velük. Mondjuk annyi pozitívuma van így a dolognak, hogy ha integerként használod, akkor ha valamiért szemét van a fájlban (bármi sztring, ami nem tekinthető számnak - mondjuk "xyz"), akkor az így átalakul 0-vá (*), és nem okoz később az összehasonlításban szintaktikai hibát.
(*) kivéve, ha van xyz nevű változó, aminek szám az értéke, mert akkor az xyz-ből simán $xyz lesz mind az értékadás, mind a read parancs során