2014-09-20 137 views
1

目前我正在制作一个Java应用程序。为了测试它,我必须运行一个服务器,然后运行一个客户端。运行终端脚本执行一个命令,当该命令运行时,打开一个新标签并运行另一个命令

所以,我想这个使用bash脚本来运行:

#!/bin/bash 
clear 
gradle runServer 
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' 
gradle runClient 

问题:运行时并没有结束,直到你关闭游戏服务器,所以接下来的两个命令不会执行。我怎样才能同时/同时运行它们

回答

0

在后台运行服务器,然后在脚本完成后将其终止。

下面是一个简单的HTTP服务器和客户端的例子。

#!/bin/bash 

date > foo.txt 
python -m SimpleHTTPServer 1234 & 
SERVER_PID="${!}" 
# Automatically terminate server on script exit 
trap 'kill "${SERVER_PID}"' 0 1 2 3 15 

# Wait for server to start 
while ! netstat -an -f inet | grep -q '\.1234 '; do 
    sleep 0.05 
done 

# Run client 
curl -s http://localhost:1234/foo.txt 

在另一个选项卡中运行会变得更加复杂;这会交错客户端和服务器的输出。

$ ./doit.sh 
127.0.0.1 - - [19/Sep/2014 23:00:32] "GET /foo.txt HTTP/1.1" 200 - 
Fri 19 Sep 2014 23:00:32 MDT 

注意从HTTP服务器输出的日志,并从HTTP客户端的输出。之后服务器自动终止。

相关问题