如何在python中输入字符串作为argv?

时间:2017-07-26 10:09:27

标签: python

我正在调试一个名为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"]}]}}

如何解决这个问题?我的程序中有什么问题或我的程序有什么问题吗?谢谢〜

1 个答案:

答案 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。