我收到了一个名为make.bat的批处理文件,其中包含以下信息:
javac Node.java
javac PhysServer.java
start java Physerver topology.txt 8080
start java Node A localhost 8080
start java Node B localhost 8080
由于我运行OSX和linux,我无法运行批处理文件。因此,我怎么能重写 这是一个perl脚本并在终端中运行?我尝试了下面的内容,但它崩溃了:
#!/user/bin/perl
javac Node.java
javac PhysServer.java
start java Physerver topology.txt 8080
start java Node A localhost 8080
start java Node B localhost 8080
我得到的错误是:
Number found where operator expected at ./make2.pl line 5, near "txt 8080"
(Do you need to predeclare txt?)
我还怀疑我应该在java前删除“start”并只调用java命令。我很抱歉这个愚蠢的问题,但是我对一般的脚本生锈了,并且自己一直在教自己如何编写perl和makefiles以便开始节省时间。
另外,当我一直在寻找答案时,我大多发现帖子都在谈论如何在java中运行perl,这是我不想做的事情。我认为这是我可以用perl做的事情,但下面的评论纠正了我。我正在学习,不会再犯同样的错误。感谢您的所有帖子。我将对所有人进行投票和评论。
答案 0 :(得分:1)
你所写的内容与shell脚本相似,远远超过Perl。
#!/bin/sh
javac Node.java
javac PhysServer.java
java Physerver topology.txt 8080
java Node A localhost 8080
java Node B localhost 8080
我不熟悉批处理脚本,所以我不知道这三个Java进程是否应该按顺序运行,等待一个Java进程在开始下一个(上面的代码执行)之前完成,或者并行运行。如果并行,则在最后三行的每一行的末尾添加&
。
答案 1 :(得分:1)
Perl是一种完整的编程语言,如Java。这不是最好的选择。 bourne shell脚本会更容易:
#!/bin/sh
javac Node.java
javac PhysServer.java
java Physerver topology.txt 8080 &
java Node A localhost 8080 &
java Node B localhost 8080 &
如果您想添加错误检查,
#!/bin/sh
javac Node.java &&
javac PhysServer.java && (
java Physerver topology.txt 8080 &
java Node A localhost 8080 &
java Node B localhost 8080 &
)
在评论中,您表示要在新窗口中启动每个服务器。我不是OS X用户,所以我不得不查阅它。另一个answer建议
#!/bin/sh
pwd="`pwd`"
javac Node.java &&
javac PhysServer.java && (
osascript -e "tell application \"Terminal\" to do script \"cd \\\"$pwd\\\"; clear; java Physerver topology.txt 8080\"" >/dev/null
osascript -e "tell application \"Terminal\" to do script \"cd \\\"$pwd\\\"; clear; java Node A localhost 8080\"" >/dev/null
osascript -e "tell application \"Terminal\" to do script \"cd \\\"$pwd\\\"; clear; java Node B localhost 8080\"" >/dev/null
)