[英]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.