數組

.數組

變量:存儲單個元素的內存空間

數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。

索引:編號從0 開始,屬于數值索引

 注:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0 版本之后開始支持,bash 的數組支持稀疏格式(索引不連續)

.數組的聲明

declare -a ARRAY_NAME

declare -A ARRAY_NAME:  關聯數組

例:

[root@lxc ~]# declare -a week

[root@lxc ~]# declare -A char

 

.賦值與引用

賦值:

(1) 一次只賦值一個元素;

ARRAY_NAME[INDEX]=VALUE

例:

[root@lxc ~]# declare -a week

[root@lxc ~]# week[0]="sun"

[root@lxc ~]# week[1]="mon"

[root@lxc ~]# week[6]="sat"

 

(2) 一次賦值全部元素:

ARRAY_NAME=("VAL1" "VAL2" "VAL3" …)

例:

[root@lxc ~]# declare -a name

[root@lxc ~]# name=("lxc" "xyh" "hy")

 

(3) 只賦值特定元素:

ARRAY_NAME=([0]="VAL1" [3]="VAL2" …)

例:

[root@lxc ~]# declare -a menu

[root@lxc ~]# menu=([1]="chaofan" [2]="chaobing" [3]="chaofen")

 (4)  交互式數組值對賦值

read -a ARRAY

例:

[root@lxc ~]# read -a title

boss  ceo  cto

[root@lxc ~]#

 

引用數組:

 引用數組元素:${ARRAY_NAME[INDEX]}

例:

[root@lxc ~]# echo ${week[1]}

mon

[root@lxc ~]# echo ${week[0]}

sun

[root@lxc ~]# echo ${week[6]}

sat

[root@lxc ~]#

注:省略[INDEX] 表示引用下標為0 的元素

 

數組的長度( 數組中元素的個數)

${#ARRAY_NAME[*]}

${#ARRAY_NAME[@]}

例:

[root@lxc ~]# echo ${title[*]}

boss ceo cto

[root@lxc ~]# echo ${title[@]}

boss ceo cto

[root@lxc ~]#

實例:

隨機生成10個數保存到數組中,并取出最大值和最小值

[root@lxc ~]# vim random_max_or_min.sh

 

#!/bin/bash

#this is judge max and min of random

declare -a rand

declare -a max

declare -a min

num=10

for i in `seq 0 $[num-1]`

do

        rand[$i]=$RANDOM

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

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

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

done

echo "all random are ${rand[*]}"

echo "max: $max"

echo "min: $min"

"random_max_or_min.sh" 16L, 362C

 

[root@lxc ~]# chmod +x random_max_or_min.sh

[root@lxc ~]# ./random_max_or_min.sh

all random are 24538 32455 31167 6683 6822 3624 7588 8009 3007 17035

max: 32455

min: 3007

[root@lxc ~]#

 

.數組數據處理

引用數組中的元素:

所有元素:${ARRAY[@]}, ${ARRAY[*]}

例:

[root@lxc ~]# echo ${week[*]}

sun mon sat

[root@lxc ~]# echo ${menu[@]}

chaofan chaobing chaofen

數組切片:${ARRAY[@]:offset:number}

offset:  要跳過的元素個數

number:  要取出的元素個數

取偏移量之后的所有元素

${ARRAY[@]:offset}

例:

[root@lxc ~]# num=({1..10})

[root@lxc ~]# echo ${num[@]}

1 2 3 4 5 6 7 8 9 10

[root@lxc ~]# echo ${num[@]:3:4}

4 5 6 7

[root@lxc ~]#

向數組中追加元素:

ARRAY[${#ARRAY[*]}]

例:

[root@lxc ~]# num=({1..10})

[root@lxc ~]# echo ${num[@]}

1 2 3 4 5 6 7 8 9 10

[root@lxc ~]# num[${#num[@]}]=11

[root@lxc ~]# echo ${num[@]}

1 2 3 4 5 6 7 8 9 10 11

[root@lxc ~]#

刪除數組中的某元素:導致稀疏格式

unset ARRAY[INDEX]

[root@lxc ~]# echo ${num[@]}

1 2 3 4 5 6 7 8 9 10 11

[root@lxc ~]# unset num[0]

[root@lxc ~]# echo ${num[@]}

2 3 4 5 6 7 8 9 10 11

[root@lxc ~]#

關聯數組:

declare -A ARRAY_NAME  注意:必須先聲明,再調用

ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2…)

例:

[root@lxc ~]# declare  -A n

[root@lxc ~]# n=([w]=wang [s]=sun [b]=bai )

[root@lxc ~]# echo ${n[@]}

bai sun wang

[root@lxc ~]#

                                                 

原創文章,作者:changge,如若轉載,請注明出處:http://www.www58058.com/60575

(0)
changgechangge
上一篇 2016-11-23
下一篇 2016-11-23

相關推薦

  • SecureCRT 8.0破不了

    各種辦法,各種百度都破不了,ok解決辦法:一用管理員身份運行crt二,注冊機打開,時ptah欄里,把SecureCRT 8.0的安裝路徑拷貝到PATH框

    Linux干貨 2018-05-04
  • 正則表達式字符集

    POSIX Description ASCII Unicode Shorthand Java [:alnum:] Alphanumeric characters [a–zA–Z0–9] [\p{L}\p{Nl}  \p{Nd}] \p{Alnum} [:alpha:] Alphabetic characters …

    Linux干貨 2017-07-07
  • 文本處理工具

    1.cat 主要三大功能: 1.一次顯示整個文件:cat filename 2.從鍵盤創建一個文件:cat > filename << EOF ….>EOF (只能創建新文件,不能編輯已有文件);cat向已經存在的文件追加內容:cat >> file <<EOF…>EOF 3.將幾…

    2017-07-29
  • exit和退出碼

    用途說明 exit命令用于退出當前shell,在shell腳本中可以終止當前腳本執行。   常用參數 格式:exitn 退出。設置退出碼為n。(Causethe shell to exit with a status of n.)   格式:exit 退出。退出碼不變,即為最后一個命令的退出碼。(Ifn is omitted, the e…

    Linux干貨 2016-01-14
  • 權限管理

    權限 權限就是用戶或者組對文件或者目錄所擁有的能力,所能執行的操作。 權限的分配: 通過ls -l file這個命令可以查看文件或者目錄的詳細信息:     [root@localhost home]# ls -l /root/   &nb…

    Linux干貨 2016-08-05
  • 用戶管理、組管理、權限管理、文本處理工具應用示例

    用戶管理、組管理、權限管理、文本處理工具應用示例 1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1/ [root@localhost ~]# chmod -R go= /hom…

    Linux干貨 2017-07-23
欧美性久久久久