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]"