скрипт bash для распаковки jar-файла и копирования пути

1

Я студент PhD по тестированию программного обеспечения. Я сделал скрипт для проверки всех классов в определенной папке. Однако, чтобы сделать его полностью автоматическим, мне нужен скрипт, который извлекает все файлы jar в соответствующей папке и копирует оба пути до и после извлечения файла jar. Например

Если у меня есть AAA.jar в местоположении /Users/mian/Systems/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
  • 0
    в чем проблема? где ты застрял?
  • 0
    На данный момент я вручную обновляю STR1 и STR2. Мне нужно извлечь файл JAR, а затем полный путь к STR1 и дополнительный путь к STR2. Например, в приведенном выше случае файл jar - это freecs.jar. Я извлек его вручную, который образует 2 папки, т.е. freeces / commands / foo.class и общий путь к нему / Users / mian / QualitasCorpus / Systems / freecs / freecs-1.3.20100406 / bin / freecs-1.3.20100406 / lib / freecs / команды /
Показать ещё 4 комментария
Теги:

1 ответ

0

Этот скрипт пишет информацию о файле jar. Имена переменных включены в эхо.

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

Применение:

У вас есть файл jar, называемый freecs.jar. Запустите его с помощью:

SCRIPTNAME jarfilename

без расширения .jar.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню