Linux下shell編程中數組的常見用法及樣本

來源:互聯網
上載者:User

新版本的Bash支援一維數組. 數組元素可以使用符號variable[xx]等方式來初始化. 另外, 指令碼可以使用declare -a variable語句來指定一個數組等。要引用一個數組元素(也就是取值), 可以使用大括弧, 訪問形式為${variable[xx]},當然了,下面是一些老男孩經常使用的方法和對數組的一點理解,如有高見,歡迎指導,先謝謝博友們了。

1.1 shell數組的常用定義方法:

1)方法一:

命令法:

dir=($(ls .))

範例1:手工命令列操作示範

[root@oldboy scripts]# dir=($(ls .))

[root@oldboy scripts]# ls .

oldboy.log apachemon.sh httpdctl

[root@oldboy scripts]# echo ${#dir[*]} <==查看數組的長度

3

命令列迴圈列印數組元素:

寫法1:

for ((i=0; i<`echo ${#dir[*]}`; i++))

do

echo -e "${dir[$i]}\n"

done

提示:i<`echo ${#dir[*]}`可以用更簡單的寫法i<${#dir[*]}替換,(感謝永夜兄弟)。

====================================

寫法2:

for ((i=0; i<${#dir[*]}; i++))

do

echo -e "${dir[$i]}\n"

done

====================================

寫法3:

for((i=0;i<${#dir[@]};i++))

do

echo ${dir[${i}]}

done

範例2:通過指令碼定義及輸出數組元素:

[root@oldboy scripts]# cat printarray.sh

dir=($(ls .))

for ((i=0; i<${#dir[*]}; i++))

do

echo -e "${dir[$i]}\n"

done

[root@oldboy scripts]# sh printarray.sh

oldboy.log

apachemon.sh

httpdctl

printarray.sh

====================================================

2)方法二:列舉元素法

array=(red green blue yellow magenta)

array=(

oldboy

zhangyue

zhangyang

)

範例3:列舉元素法的指令碼例子

[root@oldboy ~# cat test.sh

array=(

oldboy

zhangyue

zhangyang

)

for ((i=0; i< ${#array[*]}; i++))

do

echo "${array[$i]}"

done

echo ----------------------

echo "array len:${#array[*]}"

[root@oldboy ~# sh test.sh

oldboy

zhangyue

zhangyang

array len:3

3)方法3:其實方法三和方法一一樣,因具有很好的實戰價值因此單獨列出講解

judge=($(curl -I -s ${url_list[$i]}|head -1|tr "\r" "\n"))

範例4:比較專業的生產檢查URL地址的指令碼(shell數組方法):

[root@oldboy ~]# cat check_url.sh

#!/bin/bash

# this script is created by oldboy.

# e_mail:31333741@qq.com

# qqinfo:49000448

# function:check web url

# version:1.1

. /etc/init.d/functions

url_list=(

http://etiantian.org

http://www.linuxpeixun.com

http://oldboy.blog.51cto.com

)

function wait()

{

echo -n '3秒後,執行該操作.';

for ((i=0;i<3;i++))

do

echo -n ".";sleep 1

done

// www.bianceng.cn

echo

}

function check_url()

{

wait

echo 'check url...'

for ((i=0; i<${#url_list[*]}; i++))

do

# HTTP/1.1 200 OK

judge=($(curl -I -s ${url_list[$i]}|head -1|tr "\r" "\n"))

if [[ "${judge[1]}" == '200' && "${judge[2]}"=='OK' ]]

then

action "${url_list[$i]}" /bin/true

else

action "${url_list[$i]}" /bin/false

fi

done

}

check_url

[root@oldboy ~]# sh check_url.sh

3秒後,執行該操作....

check url...

http://etiantian.org [ OK ]

http://www.linuxpeixun.com [ OK ]

http://oldboy.blog.51cto.com [ OK ]

提示:上述結果是帶顏色的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.