Репозитории клонов шеллскриптов во вложенном цикле for - PullRequest
1 голос
/ 27 марта 2020

Итак, я хотел клонировать несколько репозиториев, я просто поместил его в al oop вот так

#! /bin/sh
# Begin code

git_repo=('https://aur.archlinux.org/stm32cubemx.git' 'https://aur.archlinux.org/ncurses5-compat-libs.git' 
'https://aur.archlinux.org/google-chrome.git' 'https://aur.archlinux.org/stm32pio.git')

aur_clone(){
    for repo in ${git_repo[@]}
    do
        git clone $repo
    done
}
aur_clone

Но я также хочу изменить текущую папку на папку git во время l oop поэтому я делаю это так

#! /bin/sh
# Begin code

git_name=('stm32cubemx' 'ncurses5-compat-libs' 'google-chrome' 'stm32pio')
git_repo=('https://aur.archlinux.org/stm32cubemx.git' 'https://aur.archlinux.org/ncurses5-compat-libs.git' 
'https://aur.archlinux.org/google-chrome.git' 'https://aur.archlinux.org/stm32pio.git')

aur_clone(){
    for repo in ${git_repo[@]}
    do
        for name in ${git_name[@]}
        do
            git clone $repo
            cd "$name"
            cd ..
        done
    done
}
aur_clone

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

1 Ответ

1 голос
/ 27 марта 2020

Первый цикл for повторяется по всем git_repo.

Второй цикл по всем git_names. Вместо дублирования, вы должны сопоставить оба имени с правильным URL-адресом.

Однако вы можете использовать некоторое расширение параметров оболочки , чтобы отделить имя git от URL-адреса:

$ url='https://gitlab.com/example_repo.git'
$ echo "${url##*/}" | cut -f1 -d"."
example_repo

Используя это, ваш скрипт станет чем-то вроде этого;

#! /bin/sh
# Begin code

git_repo=('https://aur.archlinux.org/stm32cubemx.git' 'https://aur.archlinux.org/ncurses5-compat-libs.git' 
'https://aur.archlinux.org/google-chrome.git' 'https://aur.archlinux.org/stm32pio.git')

aur_clone(){
    # Move to the dir you want the folder
    cd /home/me/myCode

    for repo in ${git_repo[@]}
    do
        # Get repo name
        name=$(echo "${url##*/}" | cut -f1 -d".")

        # Clone
        git clone $repo $name
    done
}
aur_clone
/home/me/myCode
/home/me/myCode/stm32cubemx
/home/me/myCode/ncurses5-compat-libs
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...