【问题标题】:Pass python variable into os.system(gnome-terminal) command将 python 变量传递给 os.system(gnome-terminal) 命令
【发布时间】:2017-01-27 19:34:34
【问题描述】:

如何将 python 变量传递给 gnome-terminal 命令选项?我想用一个特定的命令打开多个终端。

这是我想做的代码(示例):

cmd = "echo OK"
os.system("gnome-terminal -e 'bash -c \"'cmd' ; exec bash\"'")

但它不起作用,因为 shell 试图解释命令“cmd”(bash : cmd: command not found)

你能帮帮我吗?

谢谢大家

【问题讨论】:

    标签: python bash gnome-terminal


    【解决方案1】:

    您可以使用格式将变量替换为字符串:

    cmd = "echo OK"
    os.system("gnome-terminal -e 'bash -c \"'{}' ; exec bash\"'".format(cmd))
    

    【讨论】:

    • 我做了修改:os.system("gnome-terminal -e 'bash -c \'{}' ; exec bash \'".format(cmd)) 因为你的命令返回了错误。什么都没发生。我不知道为什么。
    【解决方案2】:

    我认为您传递的是字符串“cmd”而不是变量cmd = "echo OK"。试试这个。

    cmd = "echo OK"
    os.system("gnome-terminal -e 'bash -c " + cmd + " ; exec bash'")
    

    编辑>

    也许subprocess 模块可以帮助你。试试这个 sn-p。

    import subprocess    
    cmd_line = "echo Hello!"
    p = subprocess.Popen(cmd_line, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    out = p.communicate()[0]
    print out
    

    【讨论】:

    • 这是有效的,但不是我所期望的。事实上,我想要新终端的多个窗口。