将JSON有效负载中带引号的参数传递给Shell脚本

时间:2020-06-11 00:27:53

标签: python shell python-requests webhooks

我正在研究一个python脚本,该脚本将参数传递给驻留在Docker容器中的shell脚本。我使用Go Webhook工具(https://github.com/adnanh/webhook)实现了这一目标。到目前为止,我已经成功通过请求模块将简单的参数传递给我的shell脚本。但是,我遇到了障碍。

我的工具的目的是触发一个dna汇编程序,该程序具有许多可由用户调整的可选参数。目前,我一直在像这样触发webhook:

def trigger_assembler(out, assem_opts):
    id = "assemble"
    payload = {"FWD": f"-f data/{out}/R1.fq", "REV": f"-r data/{out}/R2.fq", "OUT": f"-o {out}",
                "OPT": f'-p \" {assem_opts} \"'}

    try:
        r = requests.post(f"http://0.0.0.0:9000/hooks/{id}", json=payload)
        r.raise_for_status()
    except requests.exceptions.RequestException as e:  # This is the correct syntax
        raise SystemExit(e)

在shell脚本中,我正在解析参数,然后尝试执行以下命令:

   nohup Trinity --left "${FWD}" --right "${REV}" "${ASSEM_ARGS}" \
    --output data/"${OUT}"/trinity &

我已尝试转义双引号,如示例代码所示。阅读其他堆栈溢出答案后,我尝试了各种反斜杠。我试过简单地为f字符串使用单引号,并在字符串中使用双引号。这些方法均无效。无论我做什么,在传递给我的shell脚本的参数中都存在反斜杠,这显然是有问题的。

此外,我已经用希望传递的形式的参数对shell脚本进行了单独测试,并且效果很好,因此问题似乎不在此端。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果有人来这里寻找答案,我永远找不到!我决定将信息存储在yaml文件中,该文件可供系统中的所有容器访问。我仍然非常想知道将来如何解决此问题。

相关问题