Java 提取jar文件并复制路径的bash脚本

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

我是一名软件测试的博士生。我制作了一个脚本来测试特定文件夹中的所有类。然而,为了使其完全自动化,我需要一个脚本来提取相应文件夹中的所有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

到目前为止,我的剧本是这样的

#!/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: