我想将“配置文件”中的第一行迭代到“arn”中的第一行,然后将第二行“profile”迭代到“arn”中的第二行,将“profile”中的第三行迭代到“arn”中的第三行
但是我的脚本检查了配置文件中的第一个文件,并循环了“arn”文件中的所有内容。完成后,它将到达“配置文件”中的下一行,并在“arn”中循环所有内容
#!/bin/bash
for profile in `cat ../../.aws/config|grep 'profile'`
do
for arn in `cat policy_arn`
do
aws --profile ${profile} iam delete-policy --policy-arn ${arn}
done
done
猫policy_arnarn:aws:iam::37928052:policy/PointPolicy
arn:aws:iam::56433041:policy/PointPolicy
arn:aws:iam::18225202:policy/PointPolicy
arn:aws:iam::908231278:policy/PointPolicy
arn:aws:iam::441043922:policy/PointPolicy
arn:aws:iam::227661653:policy/PointPolicy
个人资料dev-ops
pro-ops
qc-ops
输出值应该
first loop arn=arn:aws:iam::37928052:policy/PointPolicy and profile=dev-ops
2. arn=arn:aws:iam::56433041:policy/PointPolicy profile=pro-ops
3. arn=arn:aws:iam::18225202:policy/PointPolicy profile=qc-ops
但是当我运行脚本时发生的是dev-ops arn:aws:iam::37928052:policy/PointPolicy
dev-ops arn:aws:iam::56433041:policy/PointPolicy
dev-ops arn:aws:iam::18225202:policy/PointPolicy
dev-ops arn:aws:iam::908231278:policy/PointPolicy
dev-ops arn:aws:iam::441043922:policy/PointPolicy
dev-ops arn:aws:iam::227661653:policy/PointPolicy
pro-ops arn:aws:iam::37928052:policy/PointPolicy
pro-ops arn:aws:iam::56433041:policy/PointPolicy
pro-ops arn:aws:iam::18225202:policy/PointPolicy
pro-ops arn:aws:iam::908231278:policy/PointPolicy
pro-ops arn:aws:iam::441043922:policy/PointPolicy
pro-ops arn:aws:iam::227661653:policy/PointPolicy
qc-ops arn:aws:iam::37928052:policy/PointPolicy
qc-ops arn:aws:iam::56433041:policy/PointPolicy
qc-ops arn:aws:iam::18225202:policy/PointPolicy
qc-ops arn:aws:iam::908231278:policy/PointPolicy
qc-ops arn:aws:iam::441043922:policy/PointPolicy
qc-ops arn:aws:iam::227661653:policy/PointPolicy
我有40多个aws帐户,因此我将在策略arn应使用相同的配置文件帐户ID的同时为“配置文件”创建一个循环。我如何实现这样的输出。
最佳答案
您可以执行以下操作:
grep 'profile' ../../.aws/config | paste - policy_arn
paste
命令将两个文件作为列联接,在这里,我们使用-
作为第一个文件名,以表示它来自stdin
(即它来自管道)。无需循环。
关于linux - 循环退出并转到bash中的下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63826331/