在shell脚本的一行中编写多行python代码
我正在尝试使用shell脚本编辑json文件,而不使用jq。我找到了必要的python代码,但是当我试图在shell中的一行中执行所有代码时,我收到了一个语法错误。 我编写了以下命令:在shell脚本的一行中编写多行python代码,python,json,shell,Python,Json,Shell,我正在尝试使用shell脚本编辑json文件,而不使用jq。我找到了必要的python代码,但是当我试图在shell中的一行中执行所有代码时,我收到了一个语法错误。 我编写了以下命令: export data = `python -c "import json;import os;filename='test.json';with open(filename, 'r') as f:data = json.load(f) data['id'] = 'abc';os.remove(filename)
export data = `python -c "import json;import os;filename='test.json';with open(filename, 'r') as f:data = json.load(f) data['id'] = 'abc';os.remove(filename);with open(filename, 'w') as f:json.dump(data, f, indent=4)"`
有什么建议吗?得到了答案:
$(python -c "import json;import os;filename='test.json';f=open(filename, 'r');data=json.load(f);data['id']="abc";os.remove(filename);f=open(filename, 'w');json.dump(data, f, indent=4);")
无论如何谢谢你 为什么不把代码放在一个单独的python脚本中,用shell中的一行代码就可以调用它呢?python yourscript.py。您还可以让脚本获取所需的任何参数。为什么不创建一个
.py
文件并运行它呢?我正在尝试通过shell运行jenkins作业,我需要一个jenkins参数,用于修改json中的数据。这就是我需要在单个命令中执行修改操作的原因。请确保=
周围没有空格。还考虑<代码> $()>代码>导出代码>导出数据= $(Python…)/代码>我尝试执行:导出数据=(Python -c)导入JSON;导入OS;文件名=“Test.JSON”;打开(文件名,R′)为F:DATA=JSON.Load(f)数据[ID'′=ABC;OS删除(文件名);打开(文件名,W)为F:JSON.DUMP(数据,F,缩进=4))。我在“with”处看到语法错误。