如何将 kubectl 命令的输出解析为 bash 脚本的数组
How to parse output from a kubectl command into an array for a bash script
我有这个 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')
提前致谢
我假设你的密钥不包含空格。
array=($(kubectl ... | jq -r 'keys[]'))
declare -p array
我有这个 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')
提前致谢
我假设你的密钥不包含空格。
array=($(kubectl ... | jq -r 'keys[]'))
declare -p array