自动编译Bash脚本无法正常工作

时间:2013-11-07 20:24:20

标签: java bash shell scripting terminal

简单地说,我想通过命令行手动编译Java文件,但不想为每个目录执行此操作。我试着编写这个脚本,但它似乎不起作用。

CUR=$PWD                              # save workspace directory to return
for line in `find -type d -name src`  # find and loop through src paths
do
    eval cd $line                     # go to src
    eval javac *.java
    eval jar *.class                  # I need to have a jar for my project
    eval mv ../bin/                   
    cd $CUR
done

2 个答案:

答案 0 :(得分:1)

我认为您不需要在该脚本中使用eval

但有一个问题可能是您的源目录并非都被称为src(或者它们是什么?)您的目录结构是什么样的?

此外,您可能需要为您的项目使用一个jar,而不是多个jar,因此该位也无法正常工作。

您应该考虑使用真正的Java构建工具,如Ant或Maven;十多年前他们解决了这个问题。

答案 1 :(得分:1)

对现有脚本的一些改进:

for line in $(find -type d -name src)  # find and loop through src paths
do
    (
    cd $line                     # go to src
    javac *.java
    jar *.class                  # I need to have a jar for my project
    mv ../bin/                   
    )
done

使用括号在子shell中执行内部部分并避免cd问题。我也认为eval没有理由。

您确定所有的java文件都直接位于名为src的文件夹中,没有任何包结构吗?你确定他们不需要进一步的类路径信息来编译吗?

究竟是什么问题,让你觉得它不起作用?

有充分的理由,为什么你不使用成绩,专家或蚂蚁来建立你的项目?

(可以随意更新问题作为对问题的回答。)