0

我正在尝试将 envsubst 命令与作为选项传递给 ogr2ogr 的外部 sql 文件相结合,但不能完全使其工作。

export STOP_NAME=Park;

ogr2ogr \
-f geojson \
/vsistdout/ \
stops.csv \
-dialect sqlite \
-sql envsubst < @stop_geo.sql

stop_geo.sql 在哪里:

SELECT *
FROM stops
WHERE stop_name = '$STOP_NAME'

这会出错:

Warning 1: layer names ignored in combination with -sql.
ERROR 1: In ExecuteSQL(): sqlite3_prepare_v2(envsubst):
  near "envsubst": syntax error

有没有办法在 ogr2ogr -sql 命令选项中替换外部 sql 文件中的环境变量?

4

1 回答 1

0

envsubst 命令需要包含在带引号的命令替换中(即“$()”)。无需使用ogr2ogr sql 文档中提到的 @ 语法,只需使用常见的 < 运算符读取即可。

export STOP_NAME=Park;

ogr2ogr \
-f geojson \
/vsistdout/ \
stops.csv \
-dialect sqlite \
-sql "$(envsubst < stop_geo.sql)"
于 2020-06-21T02:30:24.240 回答