Assuming you are using netstat from net-tools, this is a working example:
function is_port_free {
netstat -ntpl | grep [0-9]:${1:-8080} -q ;
if [ $? -eq 1 ]
then
echo yes
else
echo no
fi
}
- ${1:-8080} means use first argument as port and 8080 if no first argument
- grep -q [0-9]:port means match a number followed by a colon followed by port
- $? is the exit value of the previous command. Zero means all went well. Exit values above 0 indicate an error condition. In the context of grep, exit code 1 means no match. The -q means don't do anything but return the exit value.
- netstat -ltnp means list numeric ports and IPs for all programs that are listening on a tcp port.
- a | b means process standard output of a with b
eg.
$ is_port_free 8080
yes
$ is_port_free 22
no