Bash 有没有办法在shell脚本中更改/清除for cicle循环中的变量?
使用此命令,我创建了3个应用程序,其中包含01-SM1 02-SM1触摸,03数据,但我需要在另一个参数中插入此数组的一部分,以便使SM1 SM1触摸数据在for循环中的应用程序名称前没有数字和“-”,如下所示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
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-`