当前位置: 首页 > 面试题库 >

在子进程中运行多个bash命令

上官华池
2023-03-14
问题内容

如果我echo a; echo b在bash中运行,结果将是两个命令都运行。但是,如果我使用子进程,则将运行第一个命令,打印出该行其余部分的全部内容。下面的代码回显a; echo b而不是a b,我如何才能运行两个命令?

import subprocess, shlex
def subprocess_cmd(command):
    process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
    proc_stdout = process.communicate()[0].strip() 
    print proc_stdout

subprocess_cmd("echo a; echo b")

问题答案:

您必须在子进程中使用shell = True,而不能使用shlex.split:

def subprocess_cmd(command):
    process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True)
    proc_stdout = process.communicate()[0].strip()
    print proc_stdout

subprocess_cmd('echo a; echo b')

返回:

a
b


 类似资料:
  • 问题内容: 我试图打开从一个Linux盒到另一个Linux盒的SSH管道,运行一些shell命令,然后关闭SSH。 我无法控制任何一个盒子上的包装,所以像织物或paramiko之类的东西就不成问题了。 我很幸运使用下面的代码来运行一个bash命令,在本例中为“正常运行时间”,但不确定如何再发出一个命令。我期望的是: 我缺少子流程模块的哪一部分? 谢谢 问题答案: 基本上,如果您调用子进程,它将创建

  • 问题内容: 我通常使用以下命令运行多个命令: 要么 但是,如果我想从一个命令行命令在后台同时运行它们呢? 不起作用。而且也没有更换用 有办法吗? 问题答案: 您究竟希望它们如何运行?如果希望它们在后台启动并按 顺序 运行,则可以执行以下操作: 另一方面,如果您希望它们在后台 并行 运行,则可以执行以下操作: 并且可以将两种技术结合起来,例如: 重击就是重击,通常有多种不同的技术可以完成相同的任务,

  • 问题内容: 如何使用线程和子流程模块产生并行bash流程?当我启动线程时,这里的第一个答案是:如何在Python中使用线程?,bash进程按顺序运行,而不是并行运行。 问题答案: 你不需要线程来并行运行子流程: 为了限制并发命令的数量,可以使用线程并提供与使用进程相同的接口: 该答案演示了限制并发子进程数的各种技术:它显示了,线程+基于队列的解决方案。 你可以限制并发子进程的数量,而无需使用线程/

  • 我有下面的课。它允许我通过java执行命令。 当我运行命令时,上一个命令的结果没有保存。例如: 给出输出: 为什么第二个“ls”命令不显示“bin”目录的内容?

  • 我正在尝试创建一个bash。sh脚本文件,使用osascript打开一个新的终端窗口/选项卡,然后运行两个命令“cd fs”和“gulp”(都在同一窗口/选项卡中) 这就是我正在尝试的,它在另一个(第三个)窗口/选项卡中运行第二个命令(做脚本“大口吃”),而不是打开的第二个。

  • 问题内容: 嗨,我正在开发一个需要我运行一些bash代码的应用程序,有没有一种方法可以将脚本硬编码到我的应用程序中然后运行它?例如(这是一个非常简化的示例) 我有以下方法来运行一行bash命令,但需要在多行中运行类似的内容。同样,上面的代码是一个非常简化的示例,我实际上在执行的操作必须通过脚本运行,而不能通过Java完成。我也想对它进行硬编码,因为我知道可以将脚本存储在手机上并使用以下命令运行它,