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

时间:2014-05-21 11:39:37

标签: 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 / 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

1 个答案:

答案 0 :(得分:0)

此脚本会写入有关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扩展名。