Python 使用bash在各自的选项卡中启动所有服务器
我有几个服务器正试图通过执行一个bash脚本来运行。我一点也不知道bash这是我第一次尝试编写脚本,但通过一点谷歌搜索,我把它拼凑在一起,成功了:Python 使用bash在各自的选项卡中启动所有服务器,python,linux,bash,gnome-terminal,Python,Linux,Bash,Gnome Terminal,我有几个服务器正试图通过执行一个bash脚本来运行。我一点也不知道bash这是我第一次尝试编写脚本,但通过一点谷歌搜索,我把它拼凑在一起,成功了: #!/bin/bash gnome-terminal \ --tab -e \ 'sh -c "cd /path1 && ./server1; exec bash"' \ --tab -e \ 'sh -c "cd /path2 && ./server2; exec b
#!/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
这显然是AppleScript,所以对我来说不可用,但我可以看看是否有类似的方法。可能是通过变量传递的
tell
命令的bash替代方法。