Linux運維學習之數組

    2107/9/15    週五 centos


   

   今天我給你們分享一波數組,那麼數組是什麼呢? 數組是存儲多個元素的連續的內存空間,至關於多個變量的集合,數組包括數組名和索引,當咱們新建了一個數組以後就能夠使用其中的索引來搞一波事情,既然有索引有編號,數組又是連續的,那麼無序的數組就叫作稀疏數組,並且咱們的索引也能夠支持自定義的格式,沒有非要數值,123的去排序,可是這個功能只有bash4.0才能夠支持,那問題來了,怎麼查看咱們的bash版本呢?數組

   wKiom1m7uYXiz4nvAABcL8koq7I458.png

   據我所知,咱們的centos6,7都是bash4.0以上的,而centos5則不能支持bash,即爲關聯索引。
bash

   既然咱們提到了變量,那咱們確定都知道,使用變量是須要提早定義的,那麼咱們的數組是怎麼定義的呢?ide


declare -a ARRAY_NAME 數組
declare -A ARRAY_NAME 關聯數組

注意:二者不可相互轉換,並且當咱們刪除數組中的某元素--->致使稀疏格式
spa

ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘...)
注意:關聯數組必須先聲明再調用
blog

   定義以後就是咱們的數組賦值,賦值的時候分爲四種
排序

   (1) 一次只賦值一個元素;
     ARRAY_NAME[INDEX]=VALUE
     weekdays[0]="Sunday"
    weekdays[4]="Thursday"
   (2) 一次賦值所有元素:
    ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...)
   (3) 只賦值特定元素:
    ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...)
   (4) 交互式數組值對賦值
    read -a ARRAY
索引

  既然能夠賦值,那咱們的查詢就很easy了,使用declare -a內存

  這些都沒有什麼好說的,咱們就直接進入肉戲,引用數組,若是是咱們的引用單個數組的某個元素,咱們能夠使用${ARRAY_NAME[INDEX]}注意:省略[INDEX]表示引用下標爲0的元素get

  wKiom1m7veKwhMR2AABz9POuLew760.png

  引用數組中的元素:
    數組切片: ${ARRAY[@]:offset:number}
    offset: 要跳過的元素個數
    number: 要取出的元素個數
    取偏移量以後的全部元素
    ${ARRAY[@]:offset}

  wKioL1m7vrzzkAEiAAAn8oIP9RI722.png

  向數組中追加一些元素:ARRAY[${#ARRAY[*]}]=value

  wKiom1m7wAHwzl8oAABSUcFXHUM909.png

  俗話說的好,光說不練假把式,咱們在下面有個小題,就當是咱們課後的小擴展:

  練習:生成10個隨機數保存於數組中,並找出其最大值和最小值。

    #!/bin/bash

    declare -a rand

    for ((i=0;i<10;i++));do

        rand[$i]=$RANDOM

        [ $i -eq 0 ] && max=${rand[$i]} && min=$min && continue

        [ ${rand[$i]} -gt $max ] && max=${rand[$i]} && continue

        [ ${rand[$i]} -lt $min ] && min=${rand[$i]}

    done

    echo "All rand are ${rand[@]}"

    echo "Max is $max"

    echo "Min is $min"

  好了,今天的分享就到這,本週剛轉戰的51CTO,內容和時間都有些倉促,不足之處,請多多指教。       

相關文章
相關標籤/搜索