數(shù)組中可以存放多個值。Bash Shell 只支持一維數(shù)組(不支持多維數(shù)組),初始化時不需要定義數(shù)組大小(與 PHP 類似)。
與大部分編程語言類似,數(shù)組元素的下標(biāo)由 0 開始。
定義數(shù)組
Shell 數(shù)組用括號來表示,元素用"空格"符號分割開,語法格式如下:
array_name=(value1 value2 ... valuen)
實(shí)例
創(chuàng)建一個簡單的數(shù)組 my_array:
#!/bin/bash
# author:谷動谷力
# url:bbs.sunsili.com
my_array=(A B "C" D "谷動谷力")
我們也可以使用數(shù)字下標(biāo)來定義數(shù)組:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
讀取數(shù)組
讀取數(shù)組元素值的一般格式是:
${array_name[index]}
實(shí)例
以下實(shí)例通過數(shù)字索引讀取數(shù)組元素:
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
保存退出
添加可執(zhí)行權(quán)限
chmod +x test_array.sh
執(zhí)行腳本,輸出結(jié)果如下所示:
第一個元素為: A
第二個元素為: B
第三個元素為: C
第四個元素為: D
第五個元素為: 谷動谷力
關(guān)聯(lián)數(shù)組
Bash 支持關(guān)聯(lián)數(shù)組,可以使用任意的字符串、或者整數(shù)作為下標(biāo)來訪問數(shù)組元素。
關(guān)聯(lián)數(shù)組使用 declare 命令來聲明,語法格式如下:
declare -A array_name
-A 選項(xiàng)就是用于聲明一個關(guān)聯(lián)數(shù)組。
關(guān)聯(lián)數(shù)組的鍵是唯一的。
以下實(shí)例我們創(chuàng)建一個關(guān)聯(lián)數(shù)組 site,并創(chuàng)建不同的鍵值:
實(shí)例
declare -A site=(["baidu"]="www.baidu.com" ["sunsili"]="www.sunsili.com" ["taobao"]="www.taobao.com")
我們也可以先聲明一個關(guān)聯(lián)數(shù)組,然后再設(shè)置鍵和值:
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
也可以在定義的同時賦值。
訪問關(guān)聯(lián)數(shù)組元素可以使用指定的鍵,格式如下:
array_name["index"]
以下實(shí)例我們通過鍵來訪問關(guān)聯(lián)數(shù)組的元素:
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
echo ${site["sunsili"]}
執(zhí)行腳本,輸出結(jié)果如下所示:
www.sunsili.com
獲取數(shù)組中的所有元素
使用@或 * 可以獲取數(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]}"
echo "數(shù)組的元素為: ${my_array[*]}"
echo "數(shù)組的元素為: ${my_array[@]}"
執(zhí)行腳本,輸出結(jié)果如下所示:
數(shù)組的元素為: A B C D 谷動谷力
數(shù)組的元素為: A B C D 谷動谷力
實(shí)例
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
echo "數(shù)組的元素為: ${site[*]}"
echo "數(shù)組的元素為: ${site[@]}"
執(zhí)行腳本,輸出結(jié)果如下所示:
數(shù)組的元素為: www.taobao.com www.baidu.com www.sunsili.com
數(shù)組的元素為: www.taobao.com www.baidu.com www.sunsili.com
在數(shù)組前加一個感嘆號 ! 可以獲取數(shù)組的所有鍵,例如:
declare -A site
site["baidu"]="www.baidu.com"
site["sunsili"]="www.sunsili.com"
site["taobao"]="www.taobao.com"
echo "數(shù)組的鍵為: ${!site[*]}"
echo "數(shù)組的鍵為: ${!site[@]}"
執(zhí)行腳本,輸出結(jié)果如下所示:
數(shù)組的鍵為: taobao baidu sunsili
數(shù)組的鍵為: taobao baidu sunsili
獲取數(shù)組的長度
獲取數(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]}"
echo "數(shù)組元素個數(shù)為: ${#my_array[*]}"
echo "數(shù)組元素個數(shù)為: ${#my_array[@]}"
執(zhí)行腳本,輸出結(jié)果如下所示:
數(shù)組元素個數(shù)為: 5
數(shù)組元素個數(shù)為: 5
審核編輯:劉清
-
PHP
+關(guān)注
關(guān)注
0文章
452瀏覽量
26579 -
Shell
+關(guān)注
關(guān)注
1文章
359瀏覽量
23194 -
Bash
+關(guān)注
關(guān)注
0文章
57瀏覽量
10136
原文標(biāo)題:【Shell腳本】Shell腳本程序開發(fā) -- 數(shù)組(四)
文章出處:【微信號:嵌入式加油站,微信公眾號:嵌入式加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論