Date: Tue, 28 Jun 2005 22:41:22 -0500 From: Kevin Kinsey <kdk@daleco.biz> To: Mike Jeays <Mike.Jeays@rogers.com> Cc: fbsd_user@a1poweruser.com, "freebsd-questions@FreeBSD. ORG" <freebsd-questions@freebsd.org> Subject: Re: Shell script help Message-ID: <42C21862.6010700@daleco.biz> In-Reply-To: <1120015025.659.12.camel@chaucer> References: <MIEPLLIBMLEEABPDBIEGCEOCHHAA.fbsd_user@a1poweruser.com> <1120015025.659.12.camel@chaucer>
next in thread | previous in thread | raw e-mail | index | archive | help
Mike Jeays wrote: >On Tue, 2005-06-28 at 22:52, fbsd_user wrote: > > >>My sh shell script ability is not that good. >>Have 2 simple coding problems. >> >>How do I code a statement to subtract one from a field. >> >>$rulenum = $rulenum - 1 >>$rulenum = '$rulenum - 1' >> >>one='1' >>$rulenum = $rulenum - $one >>$rulenum='$rulenum - $one' >> >>None of that works. must really be simple. >> >>I also have this line >>inruleno=`ipfw list | sed -n -e "s/00\([0-9]*\) $inblock/\1/p"` >> >>This works ok, the search argument is s/00\ but that is not good enough >>because the number can be 0 to 65535. The sed -n -e "s/00\([0-9]*\ needs to >>be changed to just return the first word. >> >>Thanks for any help you can give. >> >> >> >"man expr" to give the short answer to your first question: > >As an example, x=`expr $x + 1` > >536 ~ $ x=4 >537 ~ $ x=`expr $x + 1` >538 ~ $ echo $ > >Note the back-quotes to execute a command and return the result, and the >need for spaces between each token in the expr command. > > > Hi, Joe, Mike: Mike's right, of course. I dunno if this is a neat trick, or not, but here's a small sample of my fw script that shows not only another use of expr(1), but also the use of expr(1) in a function, since by its very nature it will be called many times (once for each rule, I assume).... ================= # Rule number variable RuleNum=100 ################################# # this function increments $RulNum var by 100... # ################################# inc () { RuleNum=$(expr $1 "+" 100) } ################## # LET'S GET STARTED # ################## # flush the ruleset ... /sbin/ipfw -q flush # set up the loopback ... $FW $RuleNum allow ip from any to any via $loopback inc $RuleNum # deny localhost traffic on other interfaces $FW $RuleNum deny ip from 127.0.0.0/8 to any inc $RuleNum $FW $RuleNum deny ip from any to 127.0.0.0/8 inc $RuleNum ================== HTH, Kevin Kinsey
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42C21862.6010700>