天天看點

shell 腳本 ---數組

數組的定義:所謂數組,就是相同資料類型的元素按一定順序的集合,就是把有限個類型相同的變量用一個名字指令,也就是說這些變量被定義成數組之後,它們就不在有自己的名字了,那麼我們怎麼找到各個變量或者元素呢?是通過索引或者下标(有時候也稱下标變量)

數組特點:

    1、數組是相同資料類型元素的集合

    2、數組中的各個元素是有先後順序的,它們在記憶體中按照這個先後順序放在一起,也就是說:        數組是記憶體中連續的一段空間。

    3、數組元素用整個數組名字和它自己在的數組中的順序位置來表示,A[0] 表示:數組A中的第        一個元素(或者第一個分量)以此類推,在bash shell中數組下标(索引)從0開始。

例子:現在有aa、bb、cc、dd、ee、ff 六個元素,以他們為名在/tmp下建立這幾個檔案,使用for循環的方式。怎麼寫呢?

首先說說數組的指派方法吧:

第一種方法:

ARRAY=(aa bb cc dd ee ff)每個元素之間使用空格分開。

第二種方法:使用鍵值對的方法(key=value)

ARRAY=([0]=aa [1]=bb [2]=cc [3]=dd [4]=ee [5]=ff)

第三種方法: 可以使用declare -a 來聲明一個變量類型為數組類型,稍後為其指派。

declare -a ARRAY

ARRAY[0]=aa

ARRAY[1]=bb

ARRAY[2]=cc

ARRAY[3]=dd

ARRAY[4]=ee

ARRAY[5]=ff

這種方法來給數組指派,但是有個缺陷,當數組分量(元素)相對較多時候,這種方法就顯得有點笨了

第四種方法:用系統執行指令的結果作為數組元素。

即:ARRAY=($(ls))這種方式

declare -a ARRAY   #先聲明一個變量,為數組類型

values="aa bb cc dd ee ff"  #将數組中的各個元素儲存在一個變量中用空格作為分隔符

ARRAY=($(echo ${values}))

來寫寫這個腳本呗:下面有文本模式的....

###########################################################

#!/bin/bash

#Author:wangergui       Email:[email protected]          Date:2016-08-26

#Release 1.0

#Function: auto create files (practice array)

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:~/bin

export PATH

FILES="aa bb cc dd ee ff"

ARRAY=($(echo ${FILES}))

INDEX=$(( ${#ARRAY[@]} -1))

function check (){

if [ ! -f "$1" ];then

    return 0

else

    return 1

fi

}

for I in $(seq 0 ${INDEX});do

  check /tmp/${ARRAY[${I}]}

 if [ $? -eq 0 ];then

   touch /tmp/${ARRAY[${I}]}

 fi

本文轉自 wangergui 51CTO部落格,原文連結:http://blog.51cto.com/wangergui/1843126,如需轉載請自行聯系原作者