shell腳本編程之數組

bash僅支持一維數組,類型聲明:

declare -i    : 表示數值

declare -a  :表示普通數組(默認,可不用聲明類型)

declare -A :表示關聯數組(必須聲明類型,bash需4.0以上版本才支持,可通過bash –version查看版本


一、普通數組(用數字為下標)

1.1數組賦值(修改值)方式

a).單個元素賦值

a[0]=1
a[2]=2

b).一次對全部元素賦值

a=(1 2 3)

c).按索引進行賦值

a=([0]=apple [1]=banana [2]=orange)

d).命令替換

a=(/var/log/*.log)

e).用戶輸入

read -a array

1.2數組長度   

echo ${#array[@]}   數組的長度(建議查看方式)
echo ${#array[*]}   數組的長度

用以下示例來區分兩者區別:

1.png

執行結果如下($*用雙引號引起來后,所有的參數是一個串,查看所有元素時建議用$@):

2.png

1.3其它常用

echo {array[2]}         下標為2的元素值(元素從0開始計數)   
array2=(${array1[@]})   數組復制
echo ${!array[@]}       獲取所有的下標


二、關聯數組(可用非數字字符做下標,普通數組功能在關聯數組下都可實現)

關聯數組需事先聲明,方法為:declare -A array

示例:

[root@localhost ~]# declare -A test
[root@localhost ~]# test=([apple]=a [banana]=b [orange]=o)
[root@localhost ~]# echo ${test[@]}
o a b
[root@localhost ~]# echo ${!test[@]}
orange apple banana
[root@localhost ~]#


三、數組切片

${array[@]:offset:number}   offset: 偏移的元素個數    number: 取出的元素的個數
${array[@]:offset}          取出偏移量后的所有元素
${array[@]}                 取出所有元素

示例:

[root@localhost ~]# array=(1 2 3)
[root@localhost ~]# echo ${array[@]}
1 2 3
[root@localhost ~]# echo ${array[@]:1}
2 3
[root@localhost ~]# echo ${array[@]:1:1}
2


四、刪除數組元素

unset ARRAY[index]

示例:

[root@localhost ~]# echo ${array[@]}
1 2 3
[root@localhost ~]# unset array[1]
[root@localhost ~]# echo ${array[@]}
1 3


五、綜合示例

示例1:寫一個腳本,生成10個隨機數,保存至數組中;而后顯示數組下標為偶數的元素;

方法一:

3.png

方法二:

4.png

示例2:復制一個數組中下標為偶數的元素至一個新數組中

5.png

示例3:生成10個隨機數,升序排序

6.png

示例4:打印九九乘法表

7.png

原創文章,作者:老鼠上了貓,如若轉載,請注明出處:http://www.www58058.com/7109

(0)
老鼠上了貓老鼠上了貓
上一篇 2015-08-24
下一篇 2015-08-24

相關推薦

  • Mozart的劍(文本處理工具)——叁劍(grep、正則表達式)

    之前的句子 煙鎖池塘柳 炮鎮海城樓 因荷而得藕 有杏不需梅 認識于小林寒風的一篇小說《鳳山遺夢》 grep grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹配到的行。模式:由正則表達式字符及文本字符所編寫的過濾條件 用法: grep [OPTIO…

    2017-08-03
  • httpd服務

             練習:        (1)基于主機名實現三個虛擬主機              …

    Linux干貨 2016-11-11
  • 馬哥教育網絡班21期+第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; ~]# fdisk &n…

    Linux干貨 2016-08-30
  • Linux用戶和組的基礎概念

    用戶,組和權限管理   Multi-tasks,  Multi-Users 每個使用者:    用戶標識,密碼:    認證:Authentication    授權:Authorization    審計:Audition    3A 組…

    Linux干貨 2016-12-21
  • Linux 基礎命令

    時間命令:     date:         date [option].. [+format]:顯示      [root@localhost ~]# dateThu Feb 25 14…

    Linux干貨 2016-02-28
  • 沉舟側畔千帆進,枯木頭前萬樹春

    N21第五周博客作業 1、  顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; ~]#  grep -E "^[[:space:]]+" //boot/grub/grub.conf root (hd0,0) kernel /vmlin…

    Linux干貨 2016-07-29

評論列表(2條)

  • stanley
    stanley 2015-08-24 21:43

    實戰的案例非常有不錯,很有吸引力

    • 老鼠上了貓
      老鼠上了貓 2015-08-27 19:18

      @stanley謝謝!

欧美性久久久久