【发布时间】:2012-09-10 22:03:51
【问题描述】:
我编写了一个脚本,它会为 javac 生成适当的参数来编译我的项目,以便更加精通 shell 脚本。
这很奇怪.. 脚本运行良好,但如果脚本使用这些参数运行 javac,则它不起作用,如果我在交互式 shell 中运行 exact 相同的命令,它会运行.一切都是用绝对路径输出的,所以我在这里几乎不知所措。
示例目录结构:
src/File.java
src/File.png
src/dir/File2.java
jars/Library.jar
预期输出:
build/File.class
build/File.png
build/dir/File2.class
shell脚本:
#! /bin/sh
cwd=$(pwd)
if [ -d "build" ]; then
rm -rf $cwd/build/*
else
mkdir $cwd/build
fi
find $cwd/src \( ! -path '*/.*' \) -type f ! -iname "*.java" | xargs -I{} cp --parents {} $cwd/build
cmd=$(echo javac -sourcepath $cwd/src -classpath $(find $cwd/jars -type f | awk '{ printf("\"%s\";", $0);}' | awk '{ print substr($0, 0, length($0)); }') -d $cwd/build $(find $cwd/src \( ! -path '*/.*' \) -type f -iname "*.java"))
$cmd
echo $cmd
命令输出:
javac -sourcepath /home/test/src -classpath "/home/test/jars/Library.jar" -d /home/test/build /home/test/src/File.java /home/test/src/dir/File2.java
我的实际项目太大,无法在此处发布,但基本上会发生大量错误输出,好像类路径设置不正确(它们是库函数上的错误)。如果我从 echo 语句中复制命令,将其粘贴,然后按 Enter 即可完美运行。
我不明白。
有什么想法吗?
【问题讨论】: