Date: Tue, 16 Dec 2003 17:45:06 +0100 From: Uwe Doering <gemini@geminix.org> To: freebsd-questions@freebsd.org Subject: Re: bash bug or something else? Message-ID: <3FDF3692.8070009@geminix.org> In-Reply-To: <1266318265.20031216170725@vkt.lt> References: <1266318265.20031216170725@vkt.lt>
next in thread | previous in thread | raw e-mail | index | archive | help
hugle wrote: > Hello all. > I have a little problem in here. > Actulay i think, that bash doesn't caount good, look: > > cat bin/users | wc -l > 1877 > so the file contains 1877 lines > > cat bin/users: > #!/bin/sh > /sbin/ipfw -q delete 2001 >/dev/null 2>&1 & > /sbin/ipfw -q add 2001 count ip from 192.168.0.1 to not me in via fxp0 >/dev/null 2>&1 & > /sbin/ipfw -q delete 2002 >/dev/null 2>&1 & > /sbin/ipfw -q add 2002 count ip from not me to 192.168.0.1 out via fxp0 >/dev/null 2>&1 & > [...] > > so I should have 938 rules in my firewall. > 938 * 2=1876 + 1 = 1877 lines in the script (1 rule for delete rule > and one for add rule + rule at the top '#!/bin/sh') > > but when adding this rules to the ipfw ruleset i have: > ipfw show 2000-2938 | wc -l > 809 > > so somehere my 938-809=129 rules had just gone somewhere. > I'm using bash in here.. could that be a bug in bash ? No, it's not a bash bug. In your script the order of commands is relevant. 'delete' has to be executed prior to 'add' for the same rule number. If you send each line into background separately there is no guaranteed execution order. To fix this you need to remove the trailing ampersands from all the lines. And if you have to run this in background, send the whole script into background where you call it. Uwe -- Uwe Doering | EscapeBox - Managed On-Demand UNIX Servers gemini@geminix.org | http://www.escapebox.net
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3FDF3692.8070009>