Java 提取jar文件并复制路径的bash脚本
我是一名软件测试的博士生。我制作了一个脚本来测试特定文件夹中的所有类。然而,为了使其完全自动化,我需要一个脚本来提取相应文件夹中的所有jar文件,并在提取jar文件之前和之后复制路径。比如说 如果我在/Users/mian/Systems/AAA.jar位置有AAA.jar,并且在提取时有AAA.jar创建文件夹和类org/apple/orange/banana.class,那么我想分别将org/apple/orange/分配给变量VAR1和/Users/mian/Systems/org/apple/orange/分配给VAR2 到目前为止,我的剧本是这样的Java 提取jar文件并复制路径的bash脚本,java,bash,shell,Java,Bash,Shell,我是一名软件测试的博士生。我制作了一个脚本来测试特定文件夹中的所有类。然而,为了使其完全自动化,我需要一个脚本来提取相应文件夹中的所有jar文件,并在提取jar文件之前和之后复制路径。比如说 如果我在/Users/mian/Systems/AAA.jar位置有AAA.jar,并且在提取时有AAA.jar创建文件夹和类org/apple/orange/banana.class,那么我想分别将org/apple/orange/分配给变量VAR1和/Users/mian/Systems/org/app
#!/bin/bash
STR1="/Users/mian/QualitasCorpus/Systems/freecs/freecs-1.3.20100406/bin/freecs-1.3.20100406/lib/"
STR2="freecs.commands."
for i in $( ls $STR1 ); do
if [[ $i == *.class ]]
then
echo " @@@@@@@@@@@@@@@@@@ The Class under test is "$i" @@@@@@@@@@@@@@@@@@@@@@@@@@@@" >> result.traces
java yeti.YetiWithDaikon -java -time=10s -nologs -ADFDPlus -testModules="$STR2${i%.*}" >> result.traces
echo " %%%%%%%%%%%%%%%%%%%% The Class is finished testing %%%%%%%%%%%%%%%%%%%%%%%%%" >> result.traces
fi
done
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" >> result.traces
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ End of Folder @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" >> result.traces
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" >> result.traces
mv result.traces resultsOf"$STR2"traces
此脚本写入有关jar文件的信息。变量的名称包含在echo中
#!/bin/bash
echo ""
STR1=$(dirname $(realpath $1".jar"))
unzip -qo $1".jar" -d $1 #unzip jar file to working_directory/jarname/
list=$(tree $1 -Rnfi --noreport | grep ".class") #gets the raw .class file list
list=$(echo $list | sed -e 's/'$1'\.//g') #removes the first foldername
list=$(echo $list | sed -e 's/\/class//g') #removes the last .class
list2=$list
list=$(echo $list | sed -e 's/\//\./g') #changes / to .
OLD_IFS=$IFS
IFS=$'\n'" "
echo -e "STR1=\033[34m"$STR1"\033[0m\n"
echo -e "FOLDER=\033[31m"$1"\033[0m\n"
for STR2 in $list
do
echo -e "STR2=\033[32m"$STR2"\033[0m"
done
echo ""
for STR3 in $list2
do
echo -e "STR3=\033[33m"$STR3"\033[0m"
done
echo ""
IFS=$OLD_IFS
用法:
您有一个名为freecs.jar的jar文件。使用以下命令运行它:
SCRIPTNAME jarfilename
没有
.jar
扩展名。有什么问题?你卡在哪里了?目前我正在手动更新STR1和STR2。我需要提取jar文件,然后提取到STR1的完整路径和到STR2的附加路径。例如,在上面的例子中,jar文件是freecs.jar。我手动提取了它,它形成了两个文件夹,即freecs/commands/foo.class,总路径是/Users/mian/qualitascorps/Systems/freecs/freecs-1.3.20100406/bin/freecs-1.3.20100406/lib/freecs/commands/@Asbat提取这些jar-s时,输出中是否打印了这些路径,如果是,您可以从那里筛选这些路径,并将它们作为cmdline参数提供给此脚本,然后您将永远不必手动工作:染料,当我应用jar-xvf abc.jar时,我将在输出中打印路径。如何将其分配给变量?你能告诉我密码吗?谢谢。不要解析ls: