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