Вы используете неверный тип кавычек.
Вам нужно использовать обратные кавычки, а не одиночные кавычки, чтобы аргумент был запущенной программой и передавал содержимое в forloop.
for tbl in `cat /tmp/tables`
do
echo "$tbl"
done
Также для лучшей читабельности (если вы используете bash), вы можете написать это как
for tbl in $(cat /tmp/tables)
do
echo "$tbl"
done
Если ваши ожидания состоят в том, чтобы получить каждую строку (приведенные выше циклы for дадут вам каждое слово), тогда вам может быть лучше использовать xargs
, например,
cat /tmp/tables | xargs -L1 echo
или как петля
cat /tmp/tables | while read line; do echo "$line"; done