使用declare
加-a
選項,將變量來聲明數(shù)組,語法如下:
#聲明數(shù)組
declare -a Array_Name
#創(chuàng)建數(shù)組元素
Array_Name[index_1]=value_1
Array_Name[index_2]=value_2
#或
Array_Name=(
[index_1]=value_1
[index_2]=value_2
)
注:
- 在 Bash 中命名數(shù)組的規(guī)則與變量的命名規(guī)則相同。
-Array_Name
是數(shù)組名稱。
-index
是為正整數(shù)的索引。
使用declare
加-A
選項來聲明數(shù)組,語法如下:
#聲明數(shù)組
declare -A Array_Name
#創(chuàng)建數(shù)組元素
Array_Name[index_1]=value_1
Array_Name[index_2]=value_2
#或
Array_Name=(
[index_1]=value_1
[index_2]=value_2
)
Array_Name=(element_1 element_2 element_3)
>注:
>- 此處索引從0開始。
>- `=`兩側(cè)無空格。
declare -p Array_Name
您要想訪問一個元素,首先需要知道該元素的索引下標,然后使用以下語法進行訪問獲取。
${Array_Name[index]}
如果您使用@
或*
作為索引進行訪問獲取,那么將會得到數(shù)組中的所有元素。
#!/bin/bash
declare -a arr=("welcome" "to" "W3Cschool")
echo "@"
for i in "${arr[@]}"
do
echo "$i"
done
echo "*"
for i in "${arr[*]}"
do
echo "$i"
done
執(zhí)行后得到以下結(jié)果:
@
welcome
to
W3Cschool
*
welcome to W3Cschool
注:
-@
和*
兩者的區(qū)別主要體現(xiàn)在循環(huán)結(jié)果的不同。
您還可以檢索和打印在數(shù)組中使用的鍵。語法如下:
${!Array_Name[index]}
示例:
#!/bin/bash
declare -a arr=( "Welcome" "To" "W3Cschool" )
echo "${!arr[@]}"
執(zhí)行后得到以下結(jié)果:
0 1 2
數(shù)組長度即數(shù)組中的元素個數(shù),語法如下:
${#ARRAY_NAME[@]}
**示例:**
```
#!/bin/bash
declare -a arr=( "Welcome" "To" "W3Cschool" )
echo "The array contains ${#arr[@]} elements"
執(zhí)行后得到以下結(jié)果:
The array contains 3 elements
```
遍歷數(shù)組的通用方法是 for 循環(huán),如下所示:
#!/bin/bash
declare -a arr=( "Welcome" "To" "W3Cschool" )
for i in "${!arr[@]}"
do
echo The key value of element "${arr[$i]}" is "$i"
done
執(zhí)行后得到以下結(jié)果:
The key value of element Welcome is 0
The key value of element to is 1
The key value of element W3Cschool is 2
Array_Name[index]="New Element"
示例:
#!/bin/bash
declare -a arr=( "Java" "Python" "PHP" "HTML" )
arr[4]="JavaScript"
echo "${arr[@]}"
執(zhí)行后得到以下結(jié)果:
Java Python PHP JavaScript CSS SQL
unset ARRAY_NAME[index]
示例:
#!/bin/bash
declare -a arr=( "Java" "Python" "HTML" "CSS" "JavaScript" )
unset arr[1]
echo "${arr[@]}"
執(zhí)行后得到以下結(jié)果:
Java HTML CSS JavaScript
可以通過將數(shù)組名稱作為參數(shù)傳遞給unset
命令執(zhí)行刪除操作,如下所示:
#!/bin/bash
declare -a arr=( "Java" "Python" "HTML" "CSS" "JavaScript" )
unset arr
echo ${!arr[@]}
echo ${!arr[@]}
執(zhí)行后返回空結(jié)果,數(shù)組已不存在。
Bash 數(shù)組也可以從指定的起始索引切片至指定的結(jié)束索引,語法如下:
Slieced_Array=(${Array_Name[@]:m:n}")
示例:
#!/bin/bash
example_array=( "Java" "Python" "HTML" "CSS" "JavaScript" )
sliced_array=("${example_array[@]:1:3}")
for i in "${sliced_array[@]}"
do
echo $i
done
執(zhí)行后得到以下結(jié)果:
Python
HTML
CSS
更多建議: