【发布时间】:2022-01-06 15:24:36
【问题描述】:
我可以在终端中成功执行以下命令。
command:
gdalwarp -s_srs "+datum=WGS84 +no_defs +geoidgrids=egm96-15.gtx" -t_srs "+datum=WGS84 +no_def" input.tif output.tif
现在,我想将这个命令存储到一个变量中,并在一个 docker 容器中展开这个命令。
我的脚本run.sh 如下所示。我首先将我的目标命令存储到mycommand 并以命令作为输入运行容器。
mycommand=$@;
docker run -ti --rm osgeo/gdal:ubuntu-small-latest /bin/bash -c "cd $(pwd); ${mycommand}"
然后我执行run.sh 如下。
bash run.sh gdalwarp -s_srs "+datum=WGS84 +no_defs +geoidgrids=egm96-15.gtx" -t_srs "+datum=WGS84 +no_def" input.tif output.tif
问题:
- 我希望
bash run.sh之后的所有内容都可以按字面意思存储到mycommand变量中。 - 在 docker 容器内,
mycommand可以按字面意思展开和执行。但看起来我原来的命令中的双引号会在这个过程中丢失。
谢谢。
【问题讨论】:
-
"cd $(pwd);这很奇怪,你为什么要 cd 到与主机上的beeing 相同的目录? -
@KamilCuk 容器内的目录结构和我的主机一样。所以,我希望容器内的工作目录与我的主机相同。
标签: bash docker shell syntax double-quotes