foo находится в области вашей программы, но оно пустое.
Рассмотрим этот код:
foo="test"
while read foo; do echo $foo; done < /dev/null
echo "foo=$foo"
Результат:
foo=
Проблема в том, что fooбудет установлен пустым, когда чтение не имеет ввода.Это то, что происходит в вашей программе.
Тем не менее, обратите внимание на комментарий oguzismail.(S) он ведет вас в правильном направлении:
paste FooFile BarFile | xargs -n 2 ./dothis.sh
Это действительно отличное начало и, вероятно, все, что вам понадобится в простых случаях, когда FooFile и BarFile имеют одинаковое количество записей.