Как разобрать данные из файла .property из Jenkins с помощью Index - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть файл свойств в Jenkins, назовем его Something.txt

, а Something.txt содержит

A_B_C
D_E_F

, и я использовал оболочку ниже, чтобы прочитать файл и выполнить мою автоматизацию

file="/var/lib/jenkins/components.txt"

if [ -f "$file" ]
        then
             echo "$file found."
             Websites="$(awk -F '_' '{print $1}' $file | paste -d, -s)"
             Profiles="$(awk -F '_' '{print $2}' $file | paste -d, -s)"
             Component="$(awk -F '_' '{print $3}' $file | paste -d, -s)"

                for i in $(echo $Websites | sed "s/,/ /g"); do 
                    for j in $(echo $Profiles | sed "s/,/ /g"); do
                        for k in $(echo $Component| sed "s/,/ /g"); do


mvn clean verify -D "cucumber.options=--tags @"${j} -D surefire.suiteXmlFiles=./XMLScripts/${i}.${k}.testng.xml ||true
done
                    done
                done

но что происходит, моя работа выполняется как

A-B-C & A-B-F & D-B-C & B-E-F

, но ожидаемый результат - A-B-C & D-E-F как этого добиться?

1 Ответ

0 голосов
/ 07 апреля 2020

Не читать строки с for

#!/usr/bin/env bash

file="/var/lib/jenkins/components.txt"

if [[ -f "$file ]]; then
  while IFS=_ read -r website profile component; do 
    printf '%s %s %s\n' "$website" "$profile" "$component"
  done < "$file"
fi 

В вашем случае вы можете сделать

#!/usr/bin/env bash

file="/var/lib/jenkins/components.txt"

if [[ -f "$file ]]; then
  while IFS=_ read -r website profile component; do 
    echo mvn clean verify -D cucumber.options=--tags @"$website" -D "surefire.suiteXmlFiles=./XMLScripts/$profile.$component.testng.xml" ||true
  done < "$file"
fi 

Удалить эхо, если вы удовлетворены с результатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...