Bash 有没有办法在shell脚本中更改/清除for cicle循环中的变量?

Bash 有没有办法在shell脚本中更改/清除for cicle循环中的变量?,bash,shell,scripting,Bash,Shell,Scripting,使用此命令,我创建了3个应用程序,其中包含01-SM1 02-SM1触摸,03数据,但我需要在另一个参数中插入此数组的一部分,以便使SM1 SM1触摸数据在for循环中的应用程序名称前没有数字和“-”,如下所示 RD_OPTION_AZWEBAPPNAME="01-SM1,02-SM1Touch,03-Data" for i in $(echo $RD_OPTION_AZWEBAPPNAME | sed "s/,/ /g"); do /bin/az group dep

使用此命令,我创建了3个应用程序,其中包含01-SM1 02-SM1触摸,03数据,但我需要在另一个参数中插入此数组的一部分,以便使SM1 SM1触摸数据在for循环中的应用程序名称前没有数字和“-”,如下所示

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

您应该为
RD\u OPTION\u AZWEBAPPNAME
使用数组,而不是字符串。 然后您可以迭代它,而不是使用
sed
解析它

大概是这样的:

 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_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

这是我决定的方式。

我不能选择创建数组,因为这些是web应用程序中的参数,可以使用逗号分隔的值创建多个字段选择。/array.sh:2:./array.sh:Syntax error:(“unexpectedsh或bash?sh不支持数组,您需要bash
#!/bin/bash
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-`