日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bash : 索引数组

發布時間:2023/12/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bash : 索引数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Bash 提供了兩種類型的數組,分別是索引數組(indexed array)和關聯數組(associative array)。本文主要介紹索引數組的基本用法。

索引數組的基本特點

Bash 提供的數組都是一維數組。
任何變量都可以用作索引數組。
通過 declare 關鍵字可以顯式的聲明一個索引數組。
數組的大小是不受限制的。
索引數組的元素的索引不必是連續的。
通過從零開始的整數引用數組元素。
除非另外注明,索引數組必須使用非負的整數索引元素。

自動創建索引數組

通過賦值語句可以隱式的創建索引數組:

$?myArr[0]=apple

通過給索引為 0 的元素賦值,變量 myArr 會被初始化成一個索引數組。
當然也可以這樣:

$?myArr[3]=orange

不用必須從索引 0 開始賦值。

顯式聲明一個索引數組

通過 declare 關鍵字和 -a 選項可以顯式的聲明索引數組:

$?declare?-a?myArr

然后進行初始化:

$?myArr=(apple?orange?pear)

也可以在聲明的時候進行初始化:

$?declare?-a?myArr=(apple?orange?pear)

或者在聲明后只初始化某個元素:

$?myArr[0]=grape

引用數組元素

引用數組元素稍微麻煩些,不僅要指定元素的索引位置,還需要使用 ${} 符號。請注意,索引數組的下標從 0 開始,且不能為負數(真希望所有編程語言中的數組元素都從 0 開始索引!)。

$?myArr[0]=apple $?echo?${myArr[0]}

如果不小心引用了沒有賦值的元素呢?不用擔心,這里沒有程序崩潰的問題,只不過沒有輸出內容而已:

我們還可以輕松的輸出數組的全部元素:

$?declare?-a?myArr=(apple?orange?pear) $?myArr[10]=grape $?echo?${myArr[@]}

第四個元素的索引是不連續的。我們可以獲取到所有已經賦值元素的下標進行查看:

$?echo?${!myArr[@]}

變量也可以用來索引數組元素:

$?declare?-a?myArr=(apple?orange?pear) $?i=2$?echo?${myArr[$i]}

對于索引數組,如果你不按規矩引用數組元素可能產生一些詭異的狀況。比如,用一個字符串代替非負的整數去索引元素會發生什么?

$?declare?-a?myArr=(apple?orange?pear) $?echo?${myArr[hello]}

這往往不是你想要的結果。實際上,無論你寫什么樣的字符串,都會被當做 0 來處理。

添加數組元素

比較常見的數組操作是在數組的尾部添加新的元素(嚴謹點說,這應該是隊列的一個特征!):

$?declare?-a?myArr=(apple?orange?pear) $?myArr=("${myArr[@]}"?grape) $?echo?${myArr[@]}

請注意最后一行的輸出,這樣添加的元素的索引是連續的。

把兩個數組連接成一個也是比較常見的操作:

$?declare?-a?myAbc=(a?b?c) $?myArr=("${myArr[@]}"?"${myAbc[@]}") $?echo?${myArr[@]}

提取子數組

提取部分數組元素:

$?declare?-a?myArr=(a?b?c?d?e?f?g) $?echo?${myArr[@]:2:3}

數組的長度

在 Bash 中,引用數組長度的語法多少有些奇特:

$?declare?-a?myArr=(apple?orange?pear) $?echo?${#myArr[@]}

數組長度是指被賦值了的元素個數:

$?myArr[10]=grape $?echo?${#myArr[@]}

我們還可以獲取到某個元素的長度:

哈哈,看起來有些像二維數組了!

遍歷數組元素

通過 for 語句可以像其它編程語言那樣遍歷數組中的元素:

$?declare?-a?myArr=(apple?orange?pear) $?myArr[10]=grape $?for?element?in?"${myArr[@]}";?do?echo?$element?done

刪除數組元素

$?declare?-a?myArr=(apple?orange?pear) $?unset?myArr[1] $?echo?${myArr[1]}

索引為 1 的元素已經為空了,其實數組的長度也發生了變化:

$?echo?${#myArr[@]}

此時數組的長度已經變成了 2。

下面來個復雜點的:

$?declare?-a?myArr=(a?b?c?d?e?f) $?myArr=("${myArr[@]:0:3}"?"${myArr[@]:4}")

上面的代碼移除了元素 d:

清空數組

$?declare?-a?myArr=(apple?orange?pear) $?unset?myArr $?echo?${myArr[@]}




本文轉自xsster51CTO博客,原文鏈接: ,如需轉載請自行聯系原作者












本文轉自xsster51CTO博客,原文鏈接:?http://blog.51cto.com/12945177/1948527,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的Bash : 索引数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。