The common solution is to use the -v option to define an awk variable giving it the value of the shell variable:

# correct quoting for a bourne like shell:
awk -v awkvar="$shellvariable" 'BEGIN{print awkvar}' 

If you want to pass a pattern as a variable take care that the pattern is a string, so the \ are interpreted twice(ie "\." define the string '.'), while they are only intrepreted once within / /.

#version using a constant
awk '/foo\./{print}'
#version with a variable
awk -v pattern="$pattern" '$0 ~ pattern{print}'

If your variable is an environment variable then you can access it using the ENVIRON array:

export FOO=bar
awk 'BEGIN{print ENVIRON["FOO"]}'

If this is not enough have a look at the comp.lang.awk FAQ