[英]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.