我正在尝试查看一个AWS用户在一个账户上是否具有多个访问密钥。我通过以下行获得访问键的数量:
readarray old_access_keys < <(aws iam list-access-keys --user-name "$aws_user_name" --profile="$aws_key" | jq -r '.AccessKeyMetadata[].AccessKeyId')
如果他具有多个访问密钥,则脚本应返回:
if (( "${!old_access_keys[@]}" > 1 )); then
printf "User already has maximum keys allowed for this account.\\n\\n"
return
else
...some commands...
fi
但是当我运行此脚本时,进行比较时会出错:
./ aws_key_utils.sh:第480行:((:0 1> 1:表达式中的语法错误(错误标记为“ 1> 1”)
如何正确比较数组中元素的数量与1?
答案 0 :(得分:2)
"${!old_access_keys[@]}"
的语法错误,无法获取数组中的元素数。 "${!old_access_keys[@]}"
将返回数组的所有索引(或关联数组中的键)。
要获取数组中的元素数,请使用:
if (( "${#old_access_keys[@]}" > 1 )); then
printf "User already has maximum keys allowed for this account.\\n\\n"
fi