Я анализирую документы политики AWS и пытаюсь отправить ошибки в этой команде в / dev / null, чтобы пользователь их не видел.
Это мой код:
readarray -t aws_policy_effects < \
<( if aws iam get-policy-version --policy-arn "$aws_policy_arn" \
--version-id "$aws_policy_version_id" --profile="$aws_key" 2> /dev/null | \
jq -r '.PolicyVersion.Document.Statement[].Effect'
then
true
else
aws iam get-policy-version --policy-arn "$aws_policy_arn" \
--version-id "$aws_policy_version_id" --profile="$aws_key" | \
jq -r '.PolicyVersion.Document.Statement.Effect'
fi)
Я использую оператор 'if', чтобы использовать правильный запрос jq на основе политики aws, которую мы читаем.
Я получу эту ошибку:
jq: error (at <stdin>:22): Cannot index string with string "Effect"
Поскольку эта команда всегда выполняется в качестве первого условия условия if (если в списке нет инструкции документа политики AWS):
++ jq -r '.PolicyVersion.Document.Statement[].Effect'
++ aws iam get-policy-version --policy-arn arn:aws:iam::123456789101:policy/IP_RESTRICTION --version-id v11 --profile=company-lab
Почему ошибка не скрывается, отправляя ее в / dev / null? Как я могу получить сообщение об ошибке, чтобы оно не выводилось на экран с помощью этого оператора if?