通过Bash脚本传递BBOX参数至Docker容器内Python脚本遇错排查
Docker容器中Python脚本BBOX参数传递问题解决
问题场景
通过Bash脚本启动以Python脚本为入口的Docker容器,该Python脚本要求接收lonmin latmin lonmax latmax格式的BBOX参数,遇到以下异常:
- 执行
./run.sh -a 3 33 5 40时,Python脚本抛出错误:argument --bbox: expected 4 arguments - 尝试用引号包裹BBOX参数传递时,同样触发上述错误
- 但直接在本地运行
python core.py --bbox 3 33 5 40时完全正常
解决方案
在Bash脚本中传递参数时,不要给--bbox后的参数加引号,直接使用--bbox $bbox的形式传递。
示例代码:
# 假设bbox变量存储了目标参数值 bbox="3 33 5 40" # 正确的容器启动命令 docker run --rm your-image python core.py --bbox $bbox
原因说明
用引号包裹参数时,Shell会把整个BBOX内容作为单个字符串参数传给Python脚本。而Python脚本的参数解析器(比如argparse)期望--bbox后跟随4个独立的数值参数,因此触发参数数量不匹配的错误。
去掉引号后,Shell会自动按空格将$bbox的内容拆分成4个独立参数,完全符合Python脚本的参数要求,因此可以正常执行。
内容的提问来源于stack exchange,提问作者yeaaaahhhh..hamf hamf
相关产品推荐
相关产品推荐

