簡體   English   中英

Shell 腳本中的數組連接

[英]Array Concatenation in Shell script

我嘗試使用一個簡單的 shell 腳本來查看 statefulset 的圖像,然后根據需要替換它們。

我遇到了這個問題,即存儲的數組值沒有正確顯示..這是腳本

#!/bin/bash
##-chronograph3r
##Variables 

read -p "Namespace : " NS

##### To find the Image tags in statefulset 

app=($(kubectl get statefulset -n $NS -o=name | grep "myapp" | cut -c 18-) )
declare app
imgver=($(kubectl get statefulset -n $NS ${array[@]} -o yaml | egrep "image: asia.gcr.io" ))
declare imgver

#--- To display current image version
for i in $@
do
    app[${#app[@]}]=$i
    imglist[${#imgver[@]}]=$i
    echo $i
done
for  (( i==0; i < ${#app[@]}; i++  ))
do
    echo "current image version for ${app[$i]} is ${imgver[$i]}" 
done

所需的輸出應該是,

current image version for myapp1 is image: asia.gcr.io/lucifer/myapp:latest
current image version for myapp2 is image: asia.gcr.io/lucifer/myapp:1.4.2
current image version for myapp3 is image: asia.gcr.io/lucifer/myapp:1.3.0
current image version for myapp4 is image: asia.gcr.io/lucifer/myapp:stable

我得到的輸出是

current image version for myapp1 is image: asia.gcr.io/lucifer/myapp:latest
current image version for myapp2 is image: 
current image version for myapp3 is image: asia.gcr.io/lucifer/myapp:1.3.0
current image version for myapp4 is image:

當我做“echo ${imgver[@]}”時

它返回這個

image: asia.gcr.io/lucifer/myapp:latest  image: asia.gcr.io/lucifer/myapp:1.4.2  image: asia.gcr.io/lucifer/myapp:1.3.0  image: asia.gcr.io/lucifer/myapp:stable

我相信連接聲明的數組是這里的麻煩制造者。 幫我在這里找到問題,或者讓我知道是否有其他方法可以實現所需的輸出。

感謝@socowi,我發現了這個問題。 在執行 declare -p 時,它列出了變量。 並且由於空格,字符串image:也被視為一個單獨的變量。 我選擇了 awk 而不是 egrep 並且我能夠實現所需的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM