У меня есть простой скрипт, который я хочу отображать с помощью AWS CLI определенной информации из AWS.
Например:
get_cluster_name() {
EKS_NAME=$(aws eks describe-cluster --name ${CUSTOMER_NAME}) && \
echo $EKS_NAME | jq -r .cluster.name}
вывод, когда кластер существует, в порядке, я получаю имя кластера.
когда кластер не существует, я получаю:
An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: example_cluster.
моя цель - получить пустой вывод, когда кластер не найден. для этого я хотел использовать код возврата в условии или поиск строки в выводе.
проблема в том, что вывод не является stdout или stderr, поэтому я даже не могу направить его в /dev/null, чтобы заглушить ошибку.
как я могу заставить этот код работать правильно?:
[[ $(get_cluster_name) =~ "ResourceNotFoundException" ]] && echo "EKS Cluster:....$(get_cluster_name)"
or
[[ $(get_cluster_name) ]] && echo "EKS Cluster:....$(get_cluster_name)"
Спасибо.
aws eks describe-cluster --name "test" 2> eks_output
. В моем терминале ничего не появилось, и файлeks_output
содержал ваш код ошибки:An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: test.
Такжеecho $?
после запуска сообщает код возврата254
. - person JNevill   schedule 28.07.2021he issue is that the output is not stdout or stderr
Сомневаюсь, но для подтверждения: запустите команду подstrace
и отследите вызовwrite
, который печатает это сообщение, и отследите файловый дескриптор, в который записано это сообщение. - person KamilCuk   schedule 28.07.2021EKS_NAME=$(aws eks describe-cluster --name ${CUSTOMER_NAME} >2 /dev/null)
. Таким образом, ваша переменнаяEKS_NAME
либо пуста, либо заполнена ответом json, если он был успешным. - person JNevill   schedule 28.07.2021