【问题标题】:cURL command with parameters returned by python -c "python code here" command带有由 python -c "p​​ython code here" 命令返回的参数的 cURL 命令
【发布时间】:2017-05-08 00:35:25
【问题描述】:

我有这个命令

curl http://localhost:6800/schedule.json | python -c "import json; print (' '.join(['-d '+key+'='+word for key,word in json.load(open('cron_parameters_testing.json')).items() ] ))"

实际上python命令是这样从JSON文件中读取参数的

{ “项目”:“默认” }

并将输出返回为-d project=default

我已经单独测试了python -c "import json; print (' '.join(['-d '+key+'='+word for key,word in json.load(open('cron_parameters_testing.json')).items() ] )) 命令,它可以完美运行,但它可以与 cURL 一起使用

我要运行的最后一个命令是

curl http://localhost:6800/schedule.json -d project=default

当然我希望-d project=default从我提到的命令中生成

【问题讨论】:

    标签: python linux shell curl


    【解决方案1】:

    | 是一个管道,在您的情况下,它从curl 发送标准输出以成为python 的标准输入。这似乎与您的任务无关。试试:

    curl http://localhost:6800/schedule.json `python -c "import json; print (' '.join(['-d '+key+'='+word for key,word in json.load(open('cron_parameters_testing.json')).items() ] ))"`
    

    反引号 (`...`) 评估里面的命令并被命令的输出替换。或者,您可以使用$(...),尤其是在您需要嵌套这样的命令时。

    【讨论】:

    • 在 VMWare 中的 Ubuntu 14 中,该命令有效……但我有一个具有相同 Ubuntu 14 的实时服务器,它不起作用……给出错误 TypeError: coercing to Unicode: need string or buffer, bool found
    • @Umair 这纯粹是一个 python 错误,我想我看不出是什么原因造成的。两台机器上python --version 的输出是什么? JSON 文件是否完全相同? JSON 文件中是否有任何非字符串?
    • 是的,文件内容不同
    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2018-06-03
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多