我正在调试一个名为test.py的python程序:
#!/bin/env python
import sys
print sys.argv[1]
当我输入此命令时,结果是混淆:
[root@yf-mos-test-net09 ~]# python test.py "{"execute": "guest-execute", "session": "4768", "arguments": {"commands": [{"command": "/bin/sh", "arguments": ["sh", "-c", "ping -c 1 8.8.8.8"]}]}}"
结果是:
{execute: guest-execute, session: 4768, arguments: {commands: [{command: /bin/sh, arguments: [sh, -c, ping
我的期望应该是:
{"execute": "guest-execute", "session": "4768", "arguments": {"commands": [{"command": "/bin/sh", "arguments": ["sh", "-c", "ping -c 1 8.8.8.8"]}]}}
如何解决这个问题?我的程序中有什么问题或我的程序有什么问题吗?谢谢〜
答案 0 :(得分:2)
实际上你对shell的理解让你失败了。)
你应该做的是使用不同的引号或逃避它们。
试试这个(注意json周围的单引号):
[root@yf-mos-test-net09 ~]# python test.py '{"execute": "guest-execute", "session": "4768", "arguments": {"commands": [{"command": "/bin/sh", "arguments": ["sh", "-c", "ping -c 1 8.8.8.8"]}]}}'
但它可能取决于你使用的是什么shell。