如何将字符串以及其他变量传递到gnome终端



我正在尝试创建一个Python文件,该文件将为4个不同的Discord机器人启动Python脚本。我正在努力弄清楚如何将变量传递到gnome终端。

例如:

paths = [
[
"Bot 1 Name",
"Bot 1 Path/Bot1.py"
],
[
"Bot 2 Name",
"Bot 2 Path/Bot2.py"
]
]
for bot in paths:
os.system(f"""gnome-terminal -- bash -c 'echo Starting up {bot[0]}; python "{bot[1]}"; exec bash'""")

然而,这不起作用,因为每个机器人的路径都需要用某种形式的引号包围,否则终端不会将其视为一个参数
我尝试了许多不同的引号排列,以及其他一些方法,但都没有强迫终端意识到{bot[1]}的值需要被引号包围。

理想情况下,终端应该接收如下命令:
gnome-terminal -- bash -c "echo Starting up Bot 1; python '~/Bot1.py'; exec bash"
或者类似的功能相同的东西。

有什么建议吗?

我不太确定这是否是你想要的。您可以使用python格式的字符串函数

for bot in paths:
os.system("gnome-terminal -- bash -c "echo Starting up {}; python '{}'; exec bash"".format(bot[0], bot[1]))


通过与print函数一起使用,您将获得与u提到的相同的输出。

for bot in paths:
print("gnome-terminal -- bash -c "echo Starting up {}; python '{}'; exec bash"".format(bot[0], bot[1]))

gnome终端--bash-c"echo启动Bot 1名称;python‘Bot 1路径/Bot1.py';exec bash">

gnome终端--bash-c"echo启动Bot 2名称;python'Bot 2路径/Bot2.py';exec bash">

最新更新