使用Bash

时间:2018-09-11 21:18:28

标签: bash

我正在尝试查看一个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?

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