Есть ли способ изменить / очистить переменную внутри для цикла l oop в сценарии оболочки? - PullRequest
0 голосов
/ 10 января 2020
RD_OPTION_AZWEBAPPNAME="01-SM1,02-SM1Touch,03-Data"
for i in $(echo $RD_OPTION_AZWEBAPPNAME | sed "s/,/ /g");
    do
          /bin/az group deployment create --name Template2020 --RD_OPTION_AZWEBAPPNAME=$i

С помощью этой команды я создаю 3 приложения с 01-SM1 02-SM1Touch, 03-Data, но мне нужно вставить часть этого массива в другой параметр, чтобы данные SM1 SM1Touch без числа и " - "перед именем приложения ВНУТРИ для цикла, как показано ниже

 RD_OPTION_AZWEBAPPNAME="01-SM1,02-SM1Touch,03-Data"
for i in $(echo $RD_OPTION_AZWEBAPPNAME | sed "s/,/ /g");
    do
          /bin/az group deployment create --name Template2020 --RD_OPTION_AZWEBAPPNAME=$i --webappconf=$WEBAPPNAMEWITHOUTNUMBERANDMINUSBEFORE

Ответы [ 3 ]

0 голосов
/ 10 января 2020

Рассмотрим это

RD_OPTION_AZWEBAPPNAME="01-SM1,02-SM1Touch,03-Data"
arr1=( ${RD_OPTION_AZWEBAPPNAME//,/' '} ) # conver your var to an array
arr2=( ${arr1[@]//*-/} )                  # create second array witn names SM1, SM1Touch, Data
arr3=( ${arr1[@]} ${arr2[@]} )            # create mega) array
for name in ${arr3[@]}; { your_code; }    # loop through mega array with your code
0 голосов
/ 23 января 2020
 for i in $(echo $RD_OPTION_AZWEBAPPNAME | sed "s/,/ /g");
 do
    echo $i
    export AZWEBAPPNAMENONUMBER=`echo "$i" | cut -c 4-`

Так я и решил.

0 голосов
/ 10 января 2020

Вы должны использовать массив для RD_OPTION_AZWEBAPPNAME вместо строки. Затем вы можете перебрать его вместо анализа sed.

Примерно так:

RD_OPTIONS=(
"SM1"
"SM1Touch"
"Data"
)

for number in `seq -f "%02g" 1 ${#RD_OPTIONS[@]}`
do
    name=${RD_OPTIONS[$number-1]}
    full="$number-$name"
    echo "number: $number"
    echo "name: $name"
    echo "full: $full"
done

выведет

number: 01
name: SM1
full: 01-SM1
number: 02
name: SM1Touch
full: 02-SM1Touch
number: 03
name: Data
full: 03-Data

Так что вы можете сделать это :

RD_OPTIONS=(
"SM1"
"SM1Touch"
"Data"
)

for number in `seq -f "%02g" 1 ${#RD_OPTIONS[@]}`
do
    name=${RD_OPTIONS[$number-1]}
    full="$number-$name"
    /bin/az group deployment create --name Template2020 --RD_OPTION_AZWEBAPPNAME=$full --webappconf=$name
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...