在这种情况下,如何为java程序编写包装器shell脚本

时间:2014-04-13 01:20:30

标签: java shell makefile wrapper gnu-make

大家

老实说,我对makefile并不是很了解...在我的任务中,描述是我们必须为GNU make开发一个Makefile来构建我们的程序。例如,命令行

make
mipsim -v < test1.cmd > test1.log

将构建ISS(我们制作的MIPS模拟器),然后使用调试输出(因为“-v”)运行它,从文件test1.cmd获取输入命令并将结果写入test1.log。

我的程序必须将-v,test1.cmd和test1.log作为三个参数读取到main函数中的String [] args。我不知道如何实现它......

我已完成该计划,但我不知道如何使上述事情发生。到目前为止我所知道的可能是创建一个调用java程序的包装器shell脚本......

我还检查了很多关于makefile的信息......我得到了这个

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

CLASSES = \
A.java \
mipsim.java

default: classes

classes: $(CLASSES:.java=.class)

clean:
       $(RM) *.class

我知道这个makefile只会从.java生成.class文件。但是,我怎么能创建一个包装器shell脚本......我不知道......

由于

1 个答案:

答案 0 :(得分:0)

如果您在使用问题中显示的makefile创建类文件的目录中,则可以执行这些行,假设main在类mipsim中:

java mipsim -v <test1.cmd >test1.log

您的static void main(String[] args)方法必须访问args[0]才能获得选项-v

用于执行此操作的包装器shell脚本可能如下所示

#! /bin/bash
file=$1
java mipsim -v <$file.cmd >$file.log

调用此文件mipsim,设置其执行权限位并将其存储在同一目录中。要调用,请键入,例如

./mipsim test1

除非用户碰巧在他们的PATH中拥有此目录(他们应该没有这个目录),否则需要初始./。此外,最好将cmd和日志文件之间的文件名关系硬连线 - 否则用户将输入错误,破坏旧输出等。