根据条件在 bash 中多次打印字符串
Print a string multiple times in bash based on condition
这将列出所有资源组中的所有虚拟网络。一个资源组可以有多个 vnet。在那种情况下,我需要打印每个 vnet 的资源组的值。目前我得到一对多的值作为结果
rgNames=$(az group list --subscription <sub-name> --query [].name --output tsv)
for i in $rgNames; do
vnet="$(az network vnet list -g $i --subscription <sub-name> --query [].name --output tsv)"
echo $i,$vnet
done
实际结果
rg1,vnet1
rg2,vnet2 vnet3 vnet4
rg3,vnet5 vnet6
预期结果
rg1,vnet1
rg2,vnet2
rg2,vnet3
rg2,vnet4
rg3,vnet5
rg3,vnet6
如果有多个vnet,需要多次打印资源组名称。
也循环遍历每个 vnet
。
rgNames=$(az group list --subscription <sub-name> --query [].name --output tsv)
for i in $rgNames; do
vnets="$(az network vnet list -g $i --subscription <sub-name> --query [].name --output tsv)"
for vnet in $vnets; do
echo "$i,$vnet"
done
done
此外:始终对变量加双引号以防止通配、分词等。
这将列出所有资源组中的所有虚拟网络。一个资源组可以有多个 vnet。在那种情况下,我需要打印每个 vnet 的资源组的值。目前我得到一对多的值作为结果
rgNames=$(az group list --subscription <sub-name> --query [].name --output tsv)
for i in $rgNames; do
vnet="$(az network vnet list -g $i --subscription <sub-name> --query [].name --output tsv)"
echo $i,$vnet
done
实际结果
rg1,vnet1
rg2,vnet2 vnet3 vnet4
rg3,vnet5 vnet6
预期结果
rg1,vnet1
rg2,vnet2
rg2,vnet3
rg2,vnet4
rg3,vnet5
rg3,vnet6
如果有多个vnet,需要多次打印资源组名称。
也循环遍历每个 vnet
。
rgNames=$(az group list --subscription <sub-name> --query [].name --output tsv)
for i in $rgNames; do
vnets="$(az network vnet list -g $i --subscription <sub-name> --query [].name --output tsv)"
for vnet in $vnets; do
echo "$i,$vnet"
done
done
此外:始终对变量加双引号以防止通配、分词等。