Deve ser:
for i in *.tab
do
echo item: $i
ogr2ogr -f "PostgreSQL" -s_srs "EPSG:21781" -t_srs "EPSG:4326" -overwrite -nln "$TBL_NAME" PG:"host=localhost user=\'${DBUSER}\' dbname=\'${DBNAME}\'" "$i"
done
Você precisa usar aspas duplas para permitir que o shell expanda variáveis como ${DBUSER}
inside.
Anote for i in *.tab
em vez de . Não analise a saída de for i in $(ls *.tab)
ls
, tudo o que faz é mangle nomes de arquivos com espaços e outros caracteres especiais.