带有python -c“python code here”命令

时间:2016-12-22 11:33:57

标签: python linux shell curl

我有这个命令

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文件中读取参数,如

{ 'project':'default' }

并将输出返回为-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

1 个答案:

答案 0 :(得分: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() ] ))"`

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