这是一个在文件夹中查找.tab
文件的脚本,应该使用 导入它们
ogr2ogr
,但我因正确的支撑而失败。
for i in $( ls *.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
我需要一个命令行来ogr2ogr
以这种方式执行该部分:
ogr2ogr -f "PostgreSQL" -s_srs "EPSG:21781" -t_srs "EPSG:4326" -overwrite \
-nln "geom_tour" PG:"host=localhost user=postgres dbname=gis" DMC_34093.tab
答案1
应该:
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
您需要使用双引号来让 shell 像${DBUSER}
内部一样扩展变量。
注意for i in *.tab
而不是.不解析输出for i in $(ls *.tab)
ls
,它所做的只是用空格和其他特殊字符来破坏文件名。