shell之數組

一 數組

1.1 定義數組

經過指定元素定義linux

array[key]=valueshell

key表明索引,如array[1]=one,索引從0開始數組

echo 「${array[@]}」獲取全部數組元素的值。bash

經過declare語句定義spa

declare –a array日誌

經過元素值集合定義索引

array={ v0 v1 v2v3}element

經過鍵值定義字符串

array=([0]=value0[1]=value1)變量

 

1.2 數組的賦值

 

按索引爲元素賦值:

array[n]=value

經過集合爲數組賦值

array=(a b c)

經過循環爲數組元素賦值

例子:

#! /bin/bash

#經過循環爲數組賦值

for i in {1..10}

do

   array[$i]=$i

done

#輸出元素的值

echo"${array[@]}"

1.3 訪問數組

訪問第一個數組元素:

可用數組名和下標爲0的元素,如echo「${array}」

經過下標訪問數組元素:

下標從0開始,echo「${array[3]}」

計算數組的長度:

${#array[@]}

例子:

#! /bin/bash

#定義數組

array=(Mon Tue WedThu Fri Sat Sun)

#輸出數組長度

echo "thelength of the array is ${#array[@]}"

獲取某個數組元素的長度

linux[0]="Debian"

linux[1]="RedHat"

linux[2]="Ubuntu"

linux[3]="Suse"

#輸出第4個元素

echo "thefourth element is ${linux[3]}"

#輸出第4個元素的長度,4

echo "the length of the fourth element is${#linux[3]}"

#輸出第1個元素的值

echo "thefirst element is ${linux}"

#輸出第1個元素的長度

echo "the length of the first element is${#linux}"

經過循環遍歷數組元素:

#! /bin/bash

array=(Mon Tue WedThu Fri Sat Sun)

#獲取數組長度

len="${#array[@]}"

#經過循環結構遍歷數組

for((i=0;i<$len;i++))

do

   echo "${array[$i]}"

done

 引用全部數組元素

#! /bin/bash

array=(Mon Tue WedThu Fri Sat Sun)

#經過循環輸出全部的數組元素

for e in"${array[@]}"

do

   echo "$e"

done

 以切片部分獲取部分數組元素

${array[@|*]:start:length}

start表示起始元素的下標,lengh表示要截取的數組元素的個數

 數組元素的替換:

並不影響原來的數組的值

${array[@|*]/pattern/replacement}

pattern表示要搜索的字符串,replacement表示用來替換的字符串

#! /bin/bash

#定義數組

a=(1 2 3 4 5)

#輸出替換結果

echo "theresult is ${a[@]/3/100}"

#輸出原始數組

echo "the oldarray is ${a[@]}"

#將替換結果賦給一個數組變量

a=(${a[@]/3/100})

#輸出新的數組變量的值

echo "the newarray is ${a[@]}"

 1.4 刪除數組

刪除指定數組元素:

unset array[n]

刪除整個數組

unset array

 1.5 其餘操做

複製數組:

建立一個已經存在的數組的副本

如:

newarray=(「${array[@]}」)

linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")

#複製數組

linux2=("${linux[@]}")

echo"${linux2[@]}"

 鏈接數組:

將兩個數組的數組元素鏈接在一塊兒,變成一個大的數組。新的數組一次包含兩個數組全部元素

」$array1[@]」 「${array2[@]}」

如:

#定義2個數組

linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")

shell=("bash""csh" "ksh" "rsh" "sh" "rc""tcsh")

 #鏈接數組

linuxshell=("${linux[@]}""${shell[@]}")

 #輸出合併後的數組

echo "the newarray is ${linuxshell[@]}"

#輸出新的數組的長度,14

echo "thelength of new array is ${#linuxshell[@]}"

 加載文件內容到數組

用戶能夠將普通的文本文件的內容直接加載到數組中,文件的每一行構成數組一個元素的內容。在處理日誌文件時很是有用。

如:

準備一個文本文件,demo.txt

內容爲

Ubuntu

Suse

Fedora

UTS

demo.txt內容加載到一個數組中,而後將數組內容打印處理

#加載文件內容

content=(`cat"demo.txt"`)

#經過循環輸出數組內容

for s in"${content[@]}"

do

   echo "$s"

done

相關文章
相關標籤/搜索