linux中數組的定義與使用

 

 

    我們常說,程序=指令+數據,往細一點的方向說,指令具體指的有哪些?數據又有哪些?

總結一下:

指令大概包括,編程語言中的語法關鍵字(如bash編程中的關鍵字有for,while,case,if,until,continue,break),還包括系統中的命令,和一些自己編寫的函數,這些東西都可以稱為指令。

 

數據最常見的就是變量了,還有文件,還有一個非常常用的數組。

今天來給大家分享一下數組。

數組是什么?

我們都知道,變量是一段命名的內存空間,只有一個元素,而數組,簡單來說它是許多元素按一順序,連續的存儲在內存空間中的這段空間的統稱。

一個數組,它包括多個元素。

那么,數組是如何聲明的呢?

我們使用變量時,不用聲明,但使用數組時,要聲明一下,不然系統會將其當成一個包括了多個字符串的單個變量來處理。

索引數組的聲明:

declare -a     a即為array的意思

 

如:declare -a number

linux中數組的定義與使用

這樣一來,number這個就已經被聲明為一個數組了。

數組聲明好了,我們如何給數組賦值呢?

有多種方法:

1:按需要一個元素一個元素的添加

2:一次性將多個元素添加進去

3:按稀疏格式添加

4:通過交互式的“read -a” 方式

如圖:

linux中數組的定義與使用

此種方式是一次只加一個元素。

 

看看第二種方式:

linux中數組的定義與使用

第三種:按稀疏格式添加:

linux中數組的定義與使用

我們可以看到 ,添加時并不是按照0123這樣的順序來的,而是稀疏格式的。

 

第四種:通過read -a 聲明一個數組并賦值

 

linux中數組的定義與使用

 

以上是數組的賦值。

需要注意的是,數組雖然存儲多個元素,但數組字句卻只能有一個。從上面這些圖中我們也可以看出,引用數組中的某個元素是通過一種索引機制來實現的。

元素存儲在數組中,一般情況下,是按照順序編號的,當然,順序是從0開始編號。當用數組名+編號就可以唯一標識一個數組中的某個數據了。

即:

arrayNAME[#]

引用時也要注意:

${arrayNAME[#]}

重要的事情說三遍:花括號不能少!花括號不能少!花括號不能少!

示例:將剛才我們存儲于數組中的c給打印出來。

linux中數組的定義與使用

通過數組的聲明,賦值,我們可以知道,雖然數組中元素編號有不按順序賦值的,但都是按編號索引的,我們稱這類數組為索引數組。

還有一類數組,并不是按編號索引的,而是照特定的字符索引的,我們稱這類數組為關聯數組。

關聯數組的聲明:

declare  -A

既然不按編號進行賦值,那關聯數組是如何將給元素賦值,并進行引用的呢?

linux中數組的定義與使用

如上圖所示,我們通過特定的關鍵字,對關聯數組中的某個特定的值進入賦值,引用的時候,再通過數組名+關鍵字的方式引用。

好了,這些就是索引數組和關聯數組的聲明,賦值,引用。相信大家都有一個基本的了解。通過數組,我們能夠傳遞更多的數據給指令進行處理。下面例舉一個小練習,若能掌握,說明就是真的理解什么是數組了。

例:隨機生成十個數,賦值給一個數組,要求將數組內的這十個數,進行排序,然后顯示出來。

代碼: 

 linux中數組的定義與使用

代碼的執行結果: 

代碼執行了四次,得到的結果:

linux中數組的定義與使用 

當然啦,這只是我個人的做法,相信朋友們都有自己的思想與做法,只要結果正確,基本都是正確的。

希望數組的分享對大家有幫助。

原創文章,作者:old_radish,如若轉載,請注明出處:http://www.www58058.com/76801

(2)
old_radishold_radish
上一篇 2017-05-23 16:58
下一篇 2017-05-24 17:02

相關推薦

  • centos6安裝docker

    使用的操作系統是是centos6.3,按照官方的推薦的配置,把linux內核升級到3.8以上。安裝步驟如下: 1、升級內核版本(包含aufs) cd /etc/yum.repos.d     wget http://www.hop5.in/yum/el6/hop5.repo   …

    Linux干貨 2016-05-05
  • 正則表達式

    正則表達式課程筆記

    2017-11-05
  • ?Web服務器之apache

    Web服務器之apache http協議 telnet的使用 curl命令 httpd的相關配置 welcome.conf — 403 forbidden 修改監聽的端口和地址 保持連接 DSO 定義物理主機站點文檔 資源訪問授權 路徑別名Alias 本地httpd-manual 開啟status 日志設定 虛擬主機 基于用戶的訪問控制 httpd壓力測試 …

    Linux干貨 2016-10-08
  • 7月21號:CentOS6.8(及7)基礎配置項+Linux入門(1)

    7月21號,馬哥第二天,主要內容有三個部分:一、基本命令復習二、CentOS6.8(及7)基礎配置項;三、linux入門(1) 一、基本命令復習    ls         查看文件內容  l查看文件詳細信息  -a顯示包含隱藏文…

    Linux干貨 2016-08-05
  • Python入門之閉包,匿名函數,過濾器,映射器,折疊

    在學習python函數的過程中,函數的高階應用包括閉包lambda函數,過濾器等都讓我頭痛不已.接下來我把課堂中聽到的筆記進行整理,再寫一遍,希望在提醒自己的同時也能幫助到別人. 首先,我們來看一下什么是閉包,閉包(closure)是函數式編程的重要的語法結構。函數式編程是一種編程范式 (而面向過程編程和面向對象編程也都是編程范式)。在面向過程編程中,我們見…

    Linux干貨 2015-12-19
  • shell腳本基礎

    shell腳本基礎 基本介紹 Shell腳本與Windows/Dos下的批處理相似,也就是用各類命令預先放入到一個文件中,方便一次性執行的一個程序文件,主要是方便管理員進行設置或者管理用的。但是它比Windows下的批處理更強大,比用其他編程程序編輯的程序效率更高。換一種說法也就是,shell script是利用shell的功能所寫的一個程序,這個程序是使用…

    2017-07-01
欧美性久久久久