开始每个我所有的服务器在自己的标签,我有几个服务器,我试图通过执行一个bash脚本来运行。我不知道在bash的这一切是我的脚本,而是通过Google检索我砍死这个共同的第一次尝试,它的工作:使用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"'
现在我运行的第一个Python服务器中的virtualenv这样我希望能够给一个命令行参数来决定哪些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
我想我中号用sh而不是bash的我的bash脚本内(bash -c
不工作),这样的“源”运行这些命令是未知的,也是不理解变量$virtualenv
可能出于同样的原因。
显然你可以用[email protected]
来推翻参数,但我无论如何都会这样做,我认为我在第一时间做的都是错误的。我并不真的需要cd到路径要么不知道为什么我这样做,可以简化脚本。
我从别人谁知道居然在这样做的正确方法的bash欣赏手。谢谢!
这是AppleScript显然,所以不适用于我,但我可以看到是否有类似的方法。可能是通过变量传递的'tell'命令的bash选项。 – 2014-09-14 16:01:44