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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to