Não tenho experiência com a AWS, mas vejo que você está redirecionando a saída de um comando para um arquivo:
aws iam list-roles --profile="$aws_key" |
jq -r '.Roles[].RoleName' > "$source_dir"/aws-"$aws_key"-role-list.txt
Como a saída está indo para um arquivo, quando você usa var=$(command)
, é razoável que var
esteja vazio porque command
não retorna nada: está tudo indo para "$source_dir"/aws-"$aws_key"-role-list.txt
.
Então, você quer isso:
aws_role_list=$(aws iam list-roles --profile="$aws_key" | jq -r '.Roles[].RoleName')
Ou isto:
aws iam list-roles --profile="$aws_key" |
jq -r '.Roles[].RoleName' > "$source_dir"/aws-"$aws_key"-role-list.txt
aws_role_list=$(cat "$source_dir"/aws-"$aws_key"-role-list.txt)
Se você está tentando obter o nome do arquivo e não seu conteúdo para a variável, então você quer isto:
aws_key="company-lab"
source_dir="source_files"
aws_role_list="$source_dir"/aws-"$aws_key"-role-list.txt
aws iam list-roles --profile="$aws_key" |
jq -r '.Roles[].RoleName' > "$aws_role_list"