我正在按照這個 stackoverflow 帖子的格式嘗試將影像(適用于所有 pod)的 jsonpath 放入一個陣列中,然后我可以回圈并在陣列中的每個專案上運行 gcloud 命令。
我正在嘗試的命令是:
array=( $(kubectl get pods -o jsonpath="{.items[*].spec.containers[*].image}" | jq -r 'keys[]') )
declare -p array
但是我收到錯誤:parse error: Invalid numeric literal at line 1, column 41
當我在沒有命令jq的情況下運行命令時,它會將所有內容放入第一個索引項中,因此是一個很大的長字串,帶有空格,例如
typeset -a array=( 'eu.gcr.io/repo/imagename1 eu.gcr.io/repo/imagename2 eu.gcr.io/repo/imagename3 eu.gcr.io/repo/imagename4' )
有什么想法可以讓我將此輸出轉換為單獨的陣列項以及我可以用來迭代的東西嗎?
uj5u.com熱心網友回復:
您-o jsonpath="{.items[*].spec.containers[*].image}"在一行上輸出所有影像名稱(這是我的):
nginx docker.local/node-server:1640867594 docker.local/node-server:1640867594 docker.local/node-server:1640867594 nginx nginx nginx nginx nginx
它不再是 JSON,因此將其匯入jq會做一些奇怪的事情。在您的情況下, jq (可能)抱怨其中一項:。就我而言,我得到一個稍微不同的決議錯誤。
要么放棄使用jq,要么完全依賴它:
kubectl get pods -o json | jq -r '.items[].spec.containers[].image' | sort | uniq | ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/425122.html
