envsubst 与 ogr2ogr 外部 .sql 文件

envsubst with ogr2ogr external .sql file

我正在尝试将 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 文件中的环境变量吗?

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

export STOP_NAME=Park;

ogr2ogr \
-f geojson \
/vsistdout/ \
stops.csv \
-dialect sqlite \
-sql "$(envsubst < stop_geo.sql)"