drozer console con-6ren">
gpt4 book ai didi

python - 在子进程命令中传递用双引号引起来的参数

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:31 25 4
gpt4 key购买 nike

我正在使用 subprocess.check_output() 方法从 python 脚本中执行命令。有些命令需要 "(双引号)出现在语法中。

这是一个例子:

> drozer console connect -c "run app.package.info -a com.package.name"

如果我们从上面的命令中删除 "(双引号),它会抛出错误。

我做了以下事情:

string = '\"run app.package.info -a com.package.name\"'
command = ['/usr/bin/drozer','console','connect','-c',string]
output = subprocess.check_output(command)

这让我出错:

*** Unknown syntax: "run app.package.info  -a com.package.name"

如何解决这个报价问题?

最佳答案

你不需要双引号。

在 shell 命令中需要它们的原因是 shell 从字符串中解析命令行,并将它们用作文本 run app.package.info -a com.package 的指示。名称 应放在单个 参数中:

#!/usr/bin/env python
import subprocess

c_arg = 'run app.package.info -a com.package.name'
command = ['/usr/bin/drozer', 'console', 'connect', '-c', c_arg]
output = subprocess.check_output(command)
print("Got %r" % (output,))

当您使用代码启动进程时,您明确指定了各个参数,并且没有进行 shell 解析,因此不需要额外的引号。

关于python - 在子进程命令中传递用双引号引起来的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com