我幾乎在那裏,「$我」是我有麻煩的地方。我嘗試過$ {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被定義時被評估。如果你想在循環內進行評估,它需要被轉義。 –