When you run your shell script, it executes in a new shell instance, and does not inherit any variables instantiated in the interactive shell instance.
Specific variables can be inherited this way, called environment variables. You make a variable assignment an environment variable by using
export, such as
export foo=bar. This is the bash syntax, other shells may use
env or some other method.
You can also cause the shell script to execute in the same shell instance by 'sourcing' it. You can do this with
. test.sh (note the period) or using
source test.sh. You can do this in your interactive session, or you can do this from within a shell script. This is really handy for creating shell "libraries", where you source in a set of shell functions or variable definitions from an external file. Super handy.
echo $foo # foo is instantiated in lib.sh
do_something # this is a shell function from lib.sh
where lib.sh is:
echo "I am do_something"