簡體   English   中英

Bash陣列幫助和建議

[英]Bash Array Help and Advice

我有一個包含以下內容的數組:-

d23 d3 d21 d1 d20 d0 d26 d6

我想對數組的每兩個元素重復相同的操作。 例如:

echo d23 d3

然后轉到下兩個元素:

echo d21 d1

我已經嘗試將while循環和shift組合使用。 任何幫助和建議將不勝感激。

只需遍歷它們:

a=(d23 d3 d21 d1 d20 d0 d26 d6)

$ echo ${#a[@]}
8

$ for (( i=0; i<${#a[@]}; i+=2 )); do echo "${a[$i]} ${a[$i+1]}"; done
d23 d3
d21 d1
d20 d0
d26 d6

如果您對使用shift感興趣,請注意它僅適用於位置參數,因此可以在函數中使用它:

print_pairs () {
    while [ $# -gt 0 ]; do
        echo $1 $2;
        shift 2;
    done
}

a=(d23 d3 d21 d1 d20 d0 d26 d6)
print_pairs "${a[@]}"

帶有遞歸的ooga版本的變體:

a=(d23 d3 d21 d1 d20 d0 d26 d6)
pp () 
{ 
  [ $# -lt 2 ] && return
  echo $1 $2
  shift 2
  pp $@
}

pp "${a[@]}"

暫無
暫無

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

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