Linux 數組

来源:http://www.cnblogs.com/chenmh/archive/2016/04/27/5439964.html
-Advertisement-
Play Games

:介紹 在shell4.0之後支持普通數組和關聯數組,普通數組只能使用整數作為索引,關聯數組可以使用字元串作為索引。 普通數組 普通數組的定義方法有如下兩種,註意數組的索引是從0開始 方法1:值之間是使用空格隔開 array=(1 2 3 4 5) 方法2:直接定義索引-值的方法,其實該方法相當於是 ...


:介紹

在shell4.0之後支持普通數組和關聯數組,普通數組只能使用整數作為索引,關聯數組可以使用字元串作為索引。

 

普通數組

普通數組的定義方法有如下兩種,註意數組的索引是從0開始

方法1:值之間是使用空格隔開

array=(1 2 3 4 5)

方法2:直接定義索引-值的方法,其實該方法相當於是在給數組元素賦值。

array[0]="value"

array[1]="value"

 

1.查看單個數組元素值,值的下標從0開始。

[root@localhost backup]# echo ${array[0]}
1

2.查詢數組所有元素的值,使用*或者@

[root@localhost backup]# echo ${array[*]}
1 2 3 4 5
[root@localhost backup]# echo ${array[@]}
1 2 3 4 5

3.查詢數組元素的個數,#

[root@localhost backup]# echo ${#array[*]}
5

4.改變數組元素的值

[root@localhost backup]# array[2]="33"
[root@localhost backup]# echo ${array[*]}
1 2 33 4 5

5.定義索引並引用

[root@localhost backup]# i=3
[root@localhost backup]# echo ${array[$i]}
4

6.查詢數組的索引,使用!

[root@localhost backup]# echo ${!array[*]}
0 1 2 3 4

 

關聯數組

普通數組的索引只能是整數,比如array[0],array[1]等,關聯數組的索引可以是字元串,使用關聯數組之前必須先聲明關聯數組。

聲明關聯數組:

declare -A ass_array

將元素添加到關聯數組,方法有兩種:

方法1:列表發賦值

ass_array=( [index1]=val1 [index2]=val2)

方法2:單獨賦值

ass_array[index1]=val1

ass_array[index2]=val2

舉例:

declare -A ass_array
ass_array=([book]="10 yuan" [pen]="1 yuan")

1.顯示單個數組元素內容

[root@localhost backup]# echo ${ass_array[book]}
10 yuan

2.查詢關聯數組所有元素內容

echo ${ass_array[*]}
1 yuan 10 yuan

3.查詢關聯數組的索引,在數組前使用!

[root@localhost backup]# echo ${!ass_array[*]}
pen book

4.查詢關聯數組的元素個數

[root@localhost backup]# echo ${#ass_array[*]}
2

 

動態數組生成方法

方法1:

可以使用seq
[root@localhost backup]# numarray=$(seq 100)
[root@localhost backup]# echo $numarray
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

方法2:

[root@localhost backup]# echo {1..100}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

 

這兩種定義的動態數組可以直接在迴圈中調用,例如:

for i in $mumarray;do echo $i;done;

for i in {1..100};do echo $i;done;

 

測試二者的效率,可以在其前面加上time

time echo $(seq 10000)

real    0m0.056s
user    0m0.047s
sys    0m0.002s
time echo {1..10000}

real    0m0.030s
user    0m0.023s
sys    0m0.000s

 

測試10000個元素,顯然第二種方法性能會更好。

總結

 普通數組和關聯數組只是定義的方法不一樣,查詢的方法是一樣的。

 

 

 

備註:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。

《歡迎交流討論》


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 備份類型: 完全備份 部分備份:僅備份其中的一張表或多張表 增量備份:僅備份從上次完全備份或增量備份之後變化的數據部分 熱備份:線上備份,讀寫操作不受影響 溫備份:線上備份,讀操作可繼續進行,但寫操作不允許 冷備份:離線備份,資料庫伺服器離線,備份期間不能為業務提供讀寫服務 物理備份:直接複製數據文 ...
  • 培訓Spark架構開發! 從基礎到高級,一對一培訓![技術QQ:2937765541] 課程體系: 獲取視頻資料和培訓解答技術支持地址 課程展示(大數據技術很廣,一直線上為你培訓解答!): 獲取視頻資料和培訓解答技術支持地址 ...
  • 培訓大數據架構開發、挖掘分析! 從零基礎到高級,一對一培訓![技術QQ:2937765541] 課程體系: 獲取視頻資料和培訓解答技術支持地址 課程展示(大數據技術很廣,一直線上為你培訓解答!): 獲取視頻資料和培訓解答技術支持地址 ...
  • 首先,介紹一下Redis資料庫。Redis是一種面向“鍵/值”對數據類型的記憶體資料庫,可以滿足我們對海量數據的讀寫需求。 1)redis的鍵只能是字元串; 2)redis的值支持多種數據類型: a:字元串 string b:哈希 hash c:字元串列表 list d:字元串集合 set 不重覆,無 ...
  • 由於前一段時間胃痛,導致博客園博客都停更了一個月左右。近幾天,胃病終於稍微有所好轉,決定重新寫博文。 前幾天,有個朋友剛好問到本人有關 SQL 語句,大致是原表有兩列,分別為月份、月份銷售額,而需要一條 SQL 語句實現統計出每個月份以及當前月以前月份銷售額和。尼瑪,感覺還是沒有說清,下麵用圖表示。 ...
  • mysql copy表或表數據常用的語句整理彙總. 假如我們有以下這樣一個表: 1. 下麵這個語句會拷貝表結構到新表newadmin中。 (不會拷貝表中的數據) 2. 下麵這個語句會拷貝數據到新表中。 註意:這個語句其實只是把select語句的結果建一個表。所以newadmin這個表不會有主鍵,索引 ...
  • 查詢作業的執行情況sql: step:作業的第幾個步驟。其中0為結果。 step:對應步驟的名字。 即是查作業的歷史記錄。 ...
  • 嵌入式軟體開發中,雖然很多的開發工具已經支持C++的開發,但是因為有時考慮運行效率和編程習慣,還是有很多人喜歡用C來開發嵌入式軟體。Miro Samek說:“我在開發現場發現,很多嵌入式軟體開發者(絕大多數是電子工程師)都有工作背景而且他們常常不喜歡用C++。”【1】面向對象編程(OOP)是一種方法... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...