【问题标题】:passing local variable to subprocess popen running 'gnome-terminal -e' in python将局部变量传递给在python中运行'gnome-terminal -e'的子进程popen
【发布时间】:2023-03-03 01:32:02
【问题描述】:

我的 python 脚本正在调用另一个 bash 脚本(接收参数)并在新终端中打开它(这可能看起来很奇怪,但我有我的理由)。

我正在尝试将本地 python 变量传递给 popen,但我在 mybashscript 中得到了空白参数。 我做错了什么?

代码示例:

var1="aaa"
var2="bbb"
var3="ccc"

subprocess.Popen(["gnome-terminal", "-e", "/home/mybashscript", var1, var2, var3])

我需要 var1、var2 和 var3 作为 bash 脚本参数。

【问题讨论】:

  • 手动运行gnome-terminal -e /home/mybashscript aaa bbc ccc是否有效?

标签: python bash variables subprocess popen


【解决方案1】:
var1="aaa"
var2="bbb"
var3="ccc"

subprocess.Popen(["gnome-terminal", "-e", "/home/mybashscript -"+var1+" -"+var2+" -"+var3])

var1="aaa"
var2="bbb"
var3="ccc"

subprocess.Popen(["gnome-terminal", "-e",
                 "/home/mybashscript %s %s %s" % (var1, var2, var3)])

【讨论】:

  • 第二个选项不起作用。第一个缺少“某处?
  • @Nlandau:第二个代码示例将] 放在错误的位置,它应该在 字符串之后,即创建命令:["gnome-terminal", "-e", "/home/mybashscript aaa bbb ccc"]) .注意:xterm -e 选项将与您的原始命令一起使用(-e 在 xterm 的情况下使用所有以下参数,而在 gnome-terminal 的情况下它只使用一个参数)。或者,您可以使用 gnome-terminal -x 将其余参数传递给命令。
  • 我检查过,第二个例子也像你说的那样工作。再次感谢
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 2015-11-23
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 2012-06-24
  • 1970-01-01
相关资源
最近更新 更多