下面是我正在运行的脚本
#!/bin/bash
region=('us-east-1' 'eu-central-1')
env=('prod' 'stage')
for region in "${region[@]}"
do
for env in "${env[@]}"
do
echo "$region"
echo "$env"
done
done
我得到的输出是
us-east-1
prod
us-east-1
stage
eu-central-1
stage
eu-central-1
stage
但我的期望是得到
us-east-1
prod
us-east-1
stage
eu-central-1
prod
eu-central-1
stage
脚本应该在两种环境条件下运行,但它只在生产环境中运行一次,在舞台环境中运行三次。 我哪里出错了,任何指示或建议将不胜感激
最佳答案
您需要为循环使用与初始数组不同的变量。否则,您将在第一次迭代期间覆盖数组。
这里我为数组和循环变量使用了不同的变量:
#!/bin/bash
regions=('us-east-1' 'eu-central-1')
envs=('prod' 'stage')
for region in "${regions[@]}"
do
for env in "${envs[@]}"
do
echo "$region"
echo "$env"
done
done
输出:
us-east-1
prod
us-east-1
stage
eu-central-1
prod
eu-central-1
stage
PS:另一种选择是使用一串多个单词并让 bash 对其进行迭代:
for a in foo bar
do
for b in baz qux
do
echo "${a}"
echo "${b}"
done
done
关于linux - 在 bash 脚本中一次运行多个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69808565/