數組中可以存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大?。ㄅc PHP 類似)。
與大部分編程語言類似,數組元素的下標由 0 開始。
定義數組
Shell 數組用括號來表示,元素用"空格"符號分割開,語法格式如下:
array_name=(value1 value2 ... valuen)
實例
創建一個簡單的數組 my_array:
#!/bin/bash
# author:谷動谷力
# url:bbs.sunsili.com
my_array=(A B "C" D "谷動谷力")
我們也可以使用數字下標來定義數組:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
讀取數組
讀取數組元素值的一般格式是:
${array_name[index]}
實例
以下實例通過數字索引讀取數組元素:
vim test_array.sh
#!/bin/bash
# author:谷動谷力
# url:bbs.sunsili.com
my_array=(A B "C" D "谷動谷力")
echo "第一個元素為: ${my_array[0]}"
echo "第二個元素為: ${my_array[1]}"
echo "第三個元素為: ${my_array[2]}"
echo "第四個元素為: ${my_array[3]}"
echo "第五個元素為: ${my_array[4]}"
輸入
:wq
保存退出
添加可執行權限
chmod +x test_array.sh
執行腳本,輸出結果如下所示:
第一個元素為: A
第二個元素為: B
第三個元素為: C
第四個元素為: D
第五個元素為: 谷動谷力
關聯數組
Bash 支持關聯數組,可以使用任意的字符串、或者整數作為下標來訪問數組元素。
關聯數組使用 declare 命令來聲明,語法格式如下:
declare -A array_name
-A 選項就是用于聲明一個關聯數組。
關聯數組的鍵是唯一的。
以下實例我們創建一個關聯數組 site,并創建不同的鍵值:
實例
declare -A site=(["baidu"]="www.baidu.com" ["sunsili"]="www.sunsili.com" ["taobao"]="www.taobao.com")
我們也可以先聲明一個關聯數組,然后再設置鍵和值:
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
也可以在定義的同時賦值。
訪問關聯數組元素可以使用指定的鍵,格式如下:
array_name["index"]
以下實例我們通過鍵來訪問關聯數組的元素:
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
echo ${site["sunsili"]}
執行腳本,輸出結果如下所示:
www.sunsili.com
獲取數組中的所有元素
使用@或 * 可以獲取數組中的所有元素,例如:
#!/bin/bash
# author:谷動谷力
# url:bbs.sunsili.com
my_array=(A B "C" D "谷動谷力")
echo "第一個元素為: ${my_array[0]}"
echo "第二個元素為: ${my_array[1]}"
echo "第三個元素為: ${my_array[2]}"
echo "第四個元素為: ${my_array[3]}"
echo "第五個元素為: ${my_array[4]}"
echo "數組的元素為: ${my_array[*]}"
echo "數組的元素為: ${my_array[@]}"
執行腳本,輸出結果如下所示:
數組的元素為: A B C D 谷動谷力
數組的元素為: A B C D 谷動谷力
實例
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
echo "數組的元素為: ${site[*]}"
echo "數組的元素為: ${site[@]}"
執行腳本,輸出結果如下所示:
數組的元素為: www.taobao.com www.baidu.com www.sunsili.com
數組的元素為: www.taobao.com www.baidu.com www.sunsili.com
在數組前加一個感嘆號 ! 可以獲取數組的所有鍵,例如:
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
echo "數組的鍵為: ${!site[*]}"
echo "數組的鍵為: ${!site[@]}"
執行腳本,輸出結果如下所示:
數組的鍵為: taobao baidu sunsili
數組的鍵為: taobao baidu sunsili
獲取數組的長度
獲取數組長度的方法與獲取字符串長度的方法相同,例如:
#!/bin/bash
# author:谷動谷力
# url:bbs.sunsili.com
my_array=(A B "C" D "谷動谷力")
echo "第一個元素為: ${my_array[0]}"
echo "第二個元素為: ${my_array[1]}"
echo "第三個元素為: ${my_array[2]}"
echo "第四個元素為: ${my_array[3]}"
echo "第五個元素為: ${my_array[4]}"
echo "數組元素個數為: ${#my_array[*]}"
echo "數組元素個數為: ${#my_array[@]}"
執行腳本,輸出結果如下所示:
數組元素個數為: 5
數組元素個數為: 5
審核編輯:劉清
-
PHP
+關注
關注
0文章
454瀏覽量
27184 -
Shell
+關注
關注
1文章
371瀏覽量
23865 -
Bash
+關注
關注
0文章
57瀏覽量
10365
原文標題:【Shell腳本】Shell腳本程序開發 -- 數組(四)
文章出處:【微信號:嵌入式加油站,微信公眾號:嵌入式加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
linux shell 腳本入門
嵌入式和物聯網的shell腳本學習指南之shell腳本入門免費下載

109個實用shell腳本分享
shell腳本基礎知識
Linux Shell腳本經典案例分享

評論