scripting - Differentiate between 2 and 02 in bash script -
i have bash script takes date, month , year separate arguments. using that, url constructed uses wget
fetch content , store in html file (say t.html). now, user may enter 2 digit month/date (as in 02 instead of 2 , vice-versa). how distinguish between above 2 formats , correct within script?
the url works follows:
date: 2 digit input needed. 7 must supplied 07 url constructed properly. here looking check append 0 date in case less 10 , not have 0 in front. so, 7 should become 07 date field before url constructed.
month: 2 digit input needed, here url automatically appends 0 in case month < 10. so, if user enters 2, url forms 02, if user enters 02, url forms 002. here, 0 may need appended or removed.
p.s: know method followed url s*c&s, need work it.
thanks,
sriram
it's little unclear you're asking for. if you're looking strip 1 leading zero, do:
month=${month#0}
this turn 02
2
, , 12
remains 12
.
if need remove more 1 0 (above 002
turn 02
), you'll need different, using regular expressions
while [ -z "${month##0*}" ]; month=${month#0}; done
or use regular expressions, sed
month=$(sed -e 's/^0*//'<<<"$month")
hth
edit
per edit; has been suggested, use printf
month=$(printf %02d "$month")
this turn 2
02
, 12
remains is, 123
. if want force 2 digit number or don't have printf
(which shell built-in in bash, , available otherwise too, chances pretty low), sed
can again
month=$(sed -e 's/.*\(..\)$/\1/'<<<"00$month")
which prepend 2 zeros (002
) , keep last 2 characters (02
), turning empty string 00
well. turn a
0a
though. come think of it, don't need sed
this
month="00$month" month="${month:0-2}"
(the 0-
required disambiguate default value expansion)
Comments
Post a Comment