Shell script help
Kevin Kinsey
kdk at daleco.biz
Wed Jun 29 03:48:36 GMT 2005
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
More information about the freebsd-questions
mailing list