Bash脚本调用Python脚本时,变量解析参数失效问题
问题原因及解决方法
当你在Bash中用带双引号的"$var"传递参数时,整个字符串会被当作单个参数传给Python脚本。argparse会把--circular True识别成一个完整的未知参数,而非--circular和True两个独立参数,这就是报错的原因。
下面是两种可行的解决方法:
方法一:使用Bash数组(推荐,更安全)
用数组存储多个参数,展开时会自动拆分每个元素为独立参数:
#!/bin/bash var=(--circular True) python python_script.py --input input_file "${var[@]}"
"${var[@]}"会将数组中的每个元素作为单独的命令行参数传递,效果和直接写--circular True完全一致。
方法二:直接展开变量(无特殊字符时可用)
如果参数内容不包含空格、通配符等特殊字符,可以去掉双引号直接展开变量:
#!/bin/bash var="--circular True" python python_script.py --input input_file $var
但这种方式存在风险,比如参数值包含空格时会被错误拆分,因此优先推荐数组方案。
内容的提问来源于stack exchange,提问作者Marco Monti
相关产品推荐
相关产品推荐

