簡體   English   中英

有沒有辦法在 shell 腳本中更改/清除 for cicle 循環內的變量?

[英]Is there a way to change/clean a variable inside a for cicle loop in a shell script?

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

使用此命令,我使用 01-SM1 02-SM1Touch, 03-Data 創建了 3 個 APP,但我需要在另一個參數中插入此數組的一部分,以便 SM1 SM1Touch 數據在 APP 名稱前不帶數字和“-” INSIDE a for cicle,如下圖

 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

您應該為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

考慮這個

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
 for i in $(echo $RD_OPTION_AZWEBAPPNAME | sed "s/,/ /g");
 do
    echo $i
    export AZWEBAPPNAMENONUMBER=`echo "$i" | cut -c 4-`

這是我決定的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM