【发布时间】:2019-04-25 13:04:11
【问题描述】:
我有这个 kubectl 命令,它给了我以下输出。我需要知道如何将输出存储在一个数组中,这样我就可以遍历其中的每一个,并进一步对资源发出 gcloud 命令。
kubectl get ingress test-load-balancer -o jsonpath='{.metadata.annotations.ingress\.kubernetes\.io/backends}'| jq -r 'keys'
[
"k8s-be-30423--12305b0f030d5a48",
"k8s-be-31245--10023b0f030d5a48"
]
但是,现在我需要在 bash 脚本中为这些 k8s-xx 资源运行单独的命令。我尝试了以下方法,但它没有将输出保存在数组中
read BACKEND_SERVICES<<<$(kubectl get ingress cysiv-load-balancer -o \
jsonpath='{.metadata.annotations.ingress\.kubernetes\.io/backends}'| jq -r 'keys')
提前谢谢你
【问题讨论】:
-
我的意思是,我尝试了以下方法,但没有成功。 read -t BACKEND_SERVICES
-
看起来你应该把命令分成两部分。先获取jsonpath,然后:read -t BACKEND_SERVICES
-
将 kubectl 的输出添加到您的问题中。
-
这是 kubectl 的输出。如果您有办法直接从 kubectl 获取“密钥”,那也很棒 kubectl get ingress cysiv-load-balancer -o jsonpath='{.metadata.annotations.ingress\.kubernetes\.io/backends} ' {"k8s-be-30423--74546b0f030d5a48":"健康","k8s-be-31245--74546b0f030d5a48":"健康"}