Skip site navigation (1)Skip section navigation (2)
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>