我有一个bash脚本,它从环境中读取变量,然后将其传递给python脚本,方法如下:
#!/usr/bin/env bash
if [ -n "${my_param}" ]
then
my_param_str="--my_param ${my_param}"
fi
python -u my_script.py ${my_param_str}
相应的Python脚本如下所示
parser = argparse.ArgumentParser(description='My script')
parser.add_argument('--my_param',
type=str,
default='')
parsed_args = parser.parse_args()
print(parsed_args.description)
我想将带有破折号字符“Some -- string”的字符串作为参数传递,但通过bash脚本无法正常工作,但直接通过命令行调用可以正常工作。
export my_param="Some -- string"
./launch_my_script.sh
出现错误 无法识别参数:-- string
,而python my_script.py --my_param "Some -- string"
却可以正常工作。我尝试了调整nargs和以my_param_str="--my_param '${my_param}'"
方式转义,但这两种方法都不起作用。有没有其他解决方案?或者有没有不同的处理方法?
--
标记命令参数的结束。 - sjsamsys.argv
以了解bash
给你的脚本什么。argparse
只能解析该列表中的字符串。 - hpaulj