Git зеркалирование с использованием скриптов bash, застрявших в цикле 3 for - PullRequest
0 голосов
/ 17 декабря 2018

git1 ---> git3 (должен использовать path1)

git2 ---> git4 (должен использовать path2)

git1 не может клонироваться в git4, или git2 не можетклонировать в git3.Everytime это должно работать как описано выше. Сценарий начала принимать git1, он должен быть продолжен и содержать следующие значения таким образом git1-git3-path1, когда первый цикл завершится, он должен быть запущен второй, как этот git2-git4-path2

Моя царапина

A_sources=(git1 git2)
B_destinations=(git3 git4)
C_filename=(path1 path2)
workdir="/home/"




for A in "${A_sources[@]}"; do
    for B in "${B_destinations[@]}"; do
        for C in "${C_filename[@]}"; do
            git clone --mirror "${A}"
            cd "${workdir}/${C}"9
            git remote set-url --push origin "${B}"
        done
    done
done

1 Ответ

0 голосов
/ 17 декабря 2018

один цикл по индексам вместо трех вложенных циклов по элементам, например

# ensure the size are equal
(( ${#A_sources[@]} == ${#B_destinations[@]} && ${#B_destinations[@]} == ${#C_filename[@]})) || { echo "arrays sizes are not equals"; exit 1;}

for ((i=0;i<${#A_sources[@]};i+=1)); do
    git clone --mirror "${A_sources[i]}"
    cd "${workdir}/${C_filename[i]}"9
    git remote set-url --push origin "${B_destinations[i]}"
done
...