On Sat, Jun 5, 2010 at 6:20 PM, Aiza <aiz...@comclark.com> wrote: > Robert Bonomi wrote: >>> >>> Date: Sat, 05 Jun 2010 20:51:28 +0800 >>> From: Aiza <aiz...@comclark.com> >>> To: Robert Bonomi <bon...@mail.r-bonomi.com> >>> Subject: Re: .sh & getopts >>> >>> Robert Bonomi wrote: >>>> >>>> >>>>> >>>>> From owner-freebsd-questi...@freebsd.org Thu Jun 3 23:36:28 2010 >>>>> Date: Fri, 04 Jun 2010 12:35:56 +0800 >>>>> From: Aiza <aiz...@comclark.com> >>>>> To: "questi...@freebsd.org" <questi...@freebsd.org> >>>>> Cc: Subject: .sh & getopts >>>>> >>>>> Have this code >>>>> >>>>> shift; while getopts :ugr: arg; do case ${arg} in >>>>> u) action="freebsd-update";; >>>>> g) action="freebsd-upgrade";; >>>>> r) action="freebsd-rollback";; >>>>> ?) exerr ${cmd_usage};; >>>>> esac; done; shift $(( ${OPTION} -1 )) >>>>> >>>>> >>>>> Command being executed looks like this, cmd action -flags aaaa bbbb >>>>> >>>>> Only a single -flag in allowed on the command. >>>>> >>>>> $# gives a count of parms ie: aaaa bbbb. in this example a count of 2. >>>>> >>>>> I am looking for something to check that holds the number of flags on >>>>> the command. so I can code. if flag_count gt 1 = error >>>>> >>>>> Is there such a thing created by getopts? >>>> >>>> Why bother?? >>>> >>>> flag_count=0 >>>> shift; while getopts :ugr: arg >>>> if flag_count = 1; then >>>> exerr ${cmd_usage} >>>> fi flag_count=1; >>>> do case ${arg} in >>>> {{blah-blah}} >>>> >>> nope dont work. >> >> Yup. I was in a hurry, got the code mechanics wrong. it needs to be: >> flag_count=0 >> shift; while getopts :ugr: arg ; do >> if flag_count = 1; then >> exerr ${cmd_usage} >> fi flag_count=1; >> case ${arg} in >> {{blah-blah}} >> ecas >> done >> >> >> > I think I see what your are saying. so to adapt it to my code > > > flag_count=0 > shift; while getopts :ugr: arg; do > flag_count + 1; > case ${arg} in > u) action="freebsd-update";; > g) action="freebsd-upgrade";; > r) action="freebsd-rollback";; > ?) exerr ${cmd_usage};; > esac; done; shift $(( ${OPTION} -1 )) > > > if flag_count gt 3; then > exerr ${cmd_usage} > fi > > > I think I got the concept correct, but the flag_count + 1 is not correct. I > get "flag_count: not found" when I run it this way.
You could use: flag_count=`expr $flag_count + 1` or... ...anyone else? These types of open-ended questions are always fun :) -Brandon _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"