Bash 數(shù)組

2020-06-18 18:48 更新

數(shù)組聲明

  1. 索引數(shù)組

使用declare-a選項(xiàng),將變量來(lái)聲明數(shù)組,語(yǔ)法如下:

  1. #聲明數(shù)組
  2. declare -a Array_Name
  3. #創(chuàng)建數(shù)組元素
  4. Array_Name[index_1]=value_1
  5. Array_Name[index_2]=value_2
  6. #或
  7. Array_Name=(
  8. [index_1]=value_1
  9. [index_2]=value_2
  10. )

注:
- 在 Bash 中命名數(shù)組的規(guī)則與變量的命名規(guī)則相同。
- Array_Name是數(shù)組名稱。
- index是為正整數(shù)的索引。

  1. 關(guān)聯(lián)數(shù)組

使用declare-A選項(xiàng)來(lái)聲明數(shù)組,語(yǔ)法如下:

  1. #聲明數(shù)組
  2. declare -A Array_Name
  3. #創(chuàng)建數(shù)組元素
  4. Array_Name[index_1]=value_1
  5. Array_Name[index_2]=value_2
  6. #或
  7. Array_Name=(
  8. [index_1]=value_1
  9. [index_2]=value_2
  10. )

  1. 數(shù)組初始化

  1. Array_Name=(element_1 element_2 element_3)
  1. >注:
  2. >- 此處索引從0開(kāi)始。
  3. >- `=`兩側(cè)無(wú)空格。

  1. 打印數(shù)組

  1. declare -p Array_Name

數(shù)組運(yùn)算

  1. 訪問(wèn)元素

您要想訪問(wèn)一個(gè)元素,首先需要知道該元素的索引下標(biāo),然后使用以下語(yǔ)法進(jìn)行訪問(wèn)獲取。

  1. ${Array_Name[index]}

如果您使用@*作為索引進(jìn)行訪問(wèn)獲取,那么將會(huì)得到數(shù)組中的所有元素。

  1. #!/bin/bash
  2. declare -a arr=("welcome" "to" "W3Cschool")
  3. echo "@"
  4. for i in "${arr[@]}"
  5. do
  6. echo "$i"
  7. done
  8. echo "*"
  9. for i in "${arr[*]}"
  10. do
  11. echo "$i"
  12. done

執(zhí)行后得到以下結(jié)果:

  1. @
  2. welcome
  3. to
  4. W3Cschool
  5. *
  6. welcome to W3Cschool

注:
- @*兩者的區(qū)別主要體現(xiàn)在循環(huán)結(jié)果的不同。

  1. 打印數(shù)組鍵

您還可以檢索和打印在數(shù)組中使用的鍵。語(yǔ)法如下:

  1. ${!Array_Name[index]}

示例:

  1. #!/bin/bash
  2. declare -a arr=( "Welcome" "To" "W3Cschool" )
  3. echo "${!arr[@]}"

執(zhí)行后得到以下結(jié)果:

  1. 0 1 2

  1. 查找數(shù)組長(zhǎng)度

數(shù)組長(zhǎng)度即數(shù)組中的元素個(gè)數(shù),語(yǔ)法如下:

  1. ${#ARRAY_NAME[@]}
  1. **示例:**
  2. ```
  3. #!/bin/bash

declare -a arr=( "Welcome" "To" "W3Cschool" )

echo "The array contains ${#arr[@]} elements"

  1. 執(zhí)行后得到以下結(jié)果:
  1. The array contains 3 elements
  2. ```

  1. 遍歷數(shù)組

遍歷數(shù)組的通用方法是 for 循環(huán),如下所示:

  1. #!/bin/bash
  2. declare -a arr=( "Welcome" "To" "W3Cschool" )
  3. for i in "${!arr[@]}"
  4. do
  5. echo The key value of element "${arr[$i]}" is "$i"
  6. done

執(zhí)行后得到以下結(jié)果:

  1. The key value of element Welcome is 0
  2. The key value of element to is 1
  3. The key value of element W3Cschool is 2

  1. 添加或刪除元素

  • 添加元素

  1. Array_Name[index]="New Element"

示例:

  1. #!/bin/bash
  2. declare -a arr=( "Java" "Python" "PHP" "HTML" )
  3. arr[4]="JavaScript"
  4. echo "${arr[@]}"

執(zhí)行后得到以下結(jié)果:

  1. Java Python PHP JavaScript CSS SQL

  • 刪除元素

  1. unset ARRAY_NAME[index]

示例:

  1. #!/bin/bash
  2. declare -a arr=( "Java" "Python" "HTML" "CSS" "JavaScript" )
  3. unset arr[1]
  4. echo "${arr[@]}"

執(zhí)行后得到以下結(jié)果:

  1. Java HTML CSS JavaScript

  1. 刪除數(shù)組

可以通過(guò)將數(shù)組名稱作為參數(shù)傳遞給unset命令執(zhí)行刪除操作,如下所示:

  1. #!/bin/bash
  2. declare -a arr=( "Java" "Python" "HTML" "CSS" "JavaScript" )
  3. unset arr
  4. echo ${!arr[@]}
  5. echo ${!arr[@]}

執(zhí)行后返回空結(jié)果,數(shù)組已不存在。

  1. 數(shù)組切片

Bash 數(shù)組也可以從指定的起始索引切片至指定的結(jié)束索引,語(yǔ)法如下:

  1. Slieced_Array=(${Array_Name[@]:m:n}")

示例:

  1. #!/bin/bash
  2. example_array=( "Java" "Python" "HTML" "CSS" "JavaScript" )
  3. sliced_array=("${example_array[@]:1:3}")
  4. for i in "${sliced_array[@]}"
  5. do
  6. echo $i
  7. done

執(zhí)行后得到以下結(jié)果:

  1. Python
  2. HTML
  3. CSS
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)