On 2004-05-20 Kevin D. White wrote: > Ok, so I would like to start scripting and I would really like my > script to be like Valerio's (OBC) script but there are a few things I > don't understand and I was wondering if someone can help me out. > > Here's what I am talking about: > > # ip for the external interface (assuming EXT_IF is the external) > EXT_IP=`ifconfig $EXT_IF | grep "addr:" | cut -d: -f 2 | cut -d\ -f1` > > ???? What is stored in EXT_IP? why the single '' ? Is there a > declaration of EXT_IP somewhere?
Those are not single quotes but back-ticks. A command included in back- ticks is executed and its output is returned. In the above line, the command ifconfig $EXT_IF | grep "addr:" | cut -d: -f 2 | cut -d\ -f1 will be executed and the result (the IP address) will be returned and assigned to the variable EXT_IP. > # set the network address > INT_NET="$INT_IP/$INT_MASK" > > ???? What is taking place here? What significance does '/' have? The value of the variable INT_IP (IP address) followed by a single slash followed by the value of the variable INT_MASK (netmask) is assigned to the variable INT_NET. > #setup the logging chain > $FW -N LOGDROP 2>/dev/null > > ???? I see that a new chain is built but I am not sure about > '2>/dev/null', "2>" redirects all messages going to STDERR (i.e. all error messages) to /dev/null, so they don't show up on the display. > How about the case "$1"? I would like to know how that works. > > # See how we were called. > case "$1" in [...] > esac > > ???? what is this "esac"? "$1" is the first argument passed to the script, i.e. when calling "./script.sh start" the value of "$1" would be "start". The word "esac" ends the case-clause (it's "case" written backwards). I suggest you read into the Advanced Bash-Scripting Guide [1]. [1] http://www.tldp.org/LDP/abs/html/index.html Regards Ansgar Wiechers

