Print output of cat statement in bash script loop

You are using the wrong type of quotes.

You need to use the back-quotes rather than the single quote to make the argument being a program running and piping out the content to the forloop.

for tbl in `cat /tmp/tables` 
do 
    echo "$tbl"
done

Also for better readability (if you are using bash), you can write it as

for tbl in $(cat /tmp/tables) 
do 
    echo "$tbl"
done

If your expectations are to get each line (The for-loops above will give you each word), then you may be better off using xargs, like this

cat /tmp/tables | xargs -L1 echo

or as a loop

cat /tmp/tables | while read line; do echo "$line"; done

The single quotes should be backticks:

for tbl in `cat /etc/tables`

Although, this will not get you output/input by line, but by word. To process line by line, you should try something like:

cat /etc/tables | while read line
    echo $line
done