我們常說,程序=指令+數據,往細一點的方向說,指令具體指的有哪些?數據又有哪些?
總結一下:
指令大概包括,編程語言中的語法關鍵字(如bash編程中的關鍵字有for,while,case,if,until,continue,break),還包括系統中的命令,和一些自己編寫的函數,這些東西都可以稱為指令。
數據最常見的就是變量了,還有文件,還有一個非常常用的數組。
今天來給大家分享一下數組。
數組是什么?
我們都知道,變量是一段命名的內存空間,只有一個元素,而數組,簡單來說它是許多元素按一順序,連續的存儲在內存空間中的這段空間的統稱。
一個數組,它包括多個元素。
那么,數組是如何聲明的呢?
我們使用變量時,不用聲明,但使用數組時,要聲明一下,不然系統會將其當成一個包括了多個字符串的單個變量來處理。
索引數組的聲明:
declare -a a即為array的意思
如:declare -a number
這樣一來,number這個就已經被聲明為一個數組了。
數組聲明好了,我們如何給數組賦值呢?
有多種方法:
1:按需要一個元素一個元素的添加
2:一次性將多個元素添加進去
3:按稀疏格式添加
4:通過交互式的“read -a” 方式
如圖:
此種方式是一次只加一個元素。
看看第二種方式:
第三種:按稀疏格式添加:
我們可以看到 ,添加時并不是按照0123這樣的順序來的,而是稀疏格式的。
第四種:通過read -a 聲明一個數組并賦值
以上是數組的賦值。
需要注意的是,數組雖然存儲多個元素,但數組字句卻只能有一個。從上面這些圖中我們也可以看出,引用數組中的某個元素是通過一種索引機制來實現的。
元素存儲在數組中,一般情況下,是按照順序編號的,當然,順序是從0開始編號。當用數組名+編號就可以唯一標識一個數組中的某個數據了。
即:
arrayNAME[#]
引用時也要注意:
${arrayNAME[#]}
重要的事情說三遍:花括號不能少!花括號不能少!花括號不能少!
示例:將剛才我們存儲于數組中的c給打印出來。
通過數組的聲明,賦值,我們可以知道,雖然數組中元素編號有不按順序賦值的,但都是按編號索引的,我們稱這類數組為索引數組。
還有一類數組,并不是按編號索引的,而是照特定的字符索引的,我們稱這類數組為關聯數組。
關聯數組的聲明:
declare -A
既然不按編號進行賦值,那關聯數組是如何將給元素賦值,并進行引用的呢?
如上圖所示,我們通過特定的關鍵字,對關聯數組中的某個特定的值進入賦值,引用的時候,再通過數組名+關鍵字的方式引用。
好了,這些就是索引數組和關聯數組的聲明,賦值,引用。相信大家都有一個基本的了解。通過數組,我們能夠傳遞更多的數據給指令進行處理。下面例舉一個小練習,若能掌握,說明就是真的理解什么是數組了。
例:隨機生成十個數,賦值給一個數組,要求將數組內的這十個數,進行排序,然后顯示出來。
代碼:
代碼的執行結果:
代碼執行了四次,得到的結果:
當然啦,這只是我個人的做法,相信朋友們都有自己的思想與做法,只要結果正確,基本都是正確的。
希望數組的分享對大家有幫助。
原創文章,作者:old_radish,如若轉載,請注明出處:http://www.www58058.com/76801