问题描述
我想将“配置文件”中的第一行迭代到“ 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
cat policy_arn
arn: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
(即它来自管道)。不需要循环。