gpt4 book ai didi

python - 使用 bash 在各自的选项卡中启动我的所有服务器

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:30 26 4
gpt4 key购买 nike

我尝试通过执行单个 bash 脚本来运行一些服务器。我根本不了解 bash,这是我第一次尝试编写脚本,但通过一些谷歌搜索,我将其组合在一起并且成功了:

#!/bin/bash

gnome-terminal \
--tab -e \
'sh -c "cd /path1 && ./server1; exec bash"' \
--tab -e \
'sh -c "cd /path2 && ./server2; exec bash"' \
--tab -e \
'sh -c "cd /path3 && ./server3; exec bash"' \
--tab -e \
'sh -c "cd /path4 && java -jar javaserver; exec bash"'

现在我正在 virtualenv 中运行第一个 python 服务器,所以我希望能够给出一个命令行参数来决定加载哪个 virtualenv(或使用默认值),所以我一直在尝试这样的事情:

#!/bin/bash

if [ -z "$1" ]
then
virtualenv="default"
else
virtualenv=$1
fi

gnome-terminal \
--tab -e \
'sh -c "cd /path1 && source ../$virtualenv/bin/activate && ./server1; exec bash"' \
--tab -e \
'sh -c "cd /path2 && ./server2; exec bash"' \
--tab -e \
'sh -c "cd /path3 && ./server3; exec bash"' \
--tab -e \
'sh -c "cd /path4 && java -jar javaserver; exec bash"'

因为我正在执行 sh -c 我想我在 bash 脚本中使用 sh 而不是 bash 运行这些命令(bash -c 不起作用),所以“源”未知,而且它也不理解变量 $virtualenv 可能出于同样的原因。

显然你可以使用 $@ 来覆盖参数,我在做这件事时遇到了麻烦,但无论哪种方式,我认为我一开始就做错了。我真的不需要 cd 到路径,也不知道为什么要这样做,可以简化脚本。

我非常感谢真正了解 bash 并以正确方式执行此操作的人提供帮助。谢谢!

最佳答案

这个脚本允许在同一工作目录中打开一个选项卡。(我有这个脚本的别名,这样我就可以输入别名来打开一个新选项卡。)......但是,你可以调用变量并执行操作。因此,您可以以此为基础来执行您的命令。这个脚本适用于 unix/mac,但我认为它仍然会有帮助。

#!/bin/sh

pwd=`pwd`
osascript -e "tell application \"Terminal\"" \
-e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
-e "do script \"cd $pwd; clear\" in front window" \
-e "end tell"
> /dev/null

关于python - 使用 bash 在各自的选项卡中启动我的所有服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826000/

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