我几乎在那里,“$我”是我有麻烦的地方。我尝试过$ {i},“$ i”,$ i。我确信有更多经验的人可以帮助我,我一直在为此工作1天。使我抓狂。将数组的变量迭代到命令本身是一个变量bash
session_name="Some-sesh_name"
profile_name="ephemeral-${account_id}-${profile_path}-`date +%Y%m%d%H%M%S`"
roles=("arn:aws:iam::11111111111111:role/role_name" "arn:aws:iam::222222222222:role/role_name")
sts=($(
aws sts assume-role \
--role-arn "$i" \
--role-session-name "$session_name" \
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' \
--output text
))
for i in "${roles[@]}";
do $sts ; done
aws configure set aws_access_key_id ${sts[0]} --profile ${profile_name}
aws configure set aws_secret_access_key ${sts[1]} --profile ${profile_name}
aws configure set aws_session_token ${sts[2]} --profile ${profile_name}
但是'$ i'在使用之前没有定义--role-arn“$ i”\ –
没有测试过你的脚本 - 但乍一看,我认为你需要在sts定义中转义$ i: “\ $ I”。否则$ i在sts被定义时被评估。如果你想在循环内进行评估,它需要被转义。 –