You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在exec命令中向Bash传递参数?脚本参数报错解决

问题解决方法

你的问题出在两个核心点:

  • 单引号包裹的Python代码段里,Bash不会解析$1、$2变量,Python实际收到的是原字符串$1和$2,直接当成变量名自然会触发语法错误。
  • 原脚本里的exec语句多了个多余的闭合括号,本身就不符合Python语法规范。

基础修复版本

直接修改脚本,用双引号包裹Python代码(让Bash能正常展开变量),同时修正语法错误:

#!/bin/bash
./buind/env/hue shell -i python -c "exec(open('my.py').read, {'pars': ['$1', '$2']})"

兼容特殊参数的稳妥版本

如果你的参数包含空格、引号这类特殊字符,上面的写法可能出问题,可以先把参数转义成合法的Python字符串:

#!/bin/bash
# 转义参数为Python可识别的安全格式
par1=$(printf "%q" "$1")
par2=$(printf "%q" "$2")
./buind/env/hue shell -i python -c "exec(open('my.py').read, {'pars': [$par1, $par2]})"

这样运行./my.sh "mypar1" "mypar2"时,Bash会先把$1、$2替换成实际参数,再传递给Python执行,就不会再报语法错误了。

内容的提问来源于stack exchange,提问作者CompEng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:37:07