bash数组基础

数组:数据结构,

  数据序列:连续的多个数据,可以使用索引获取相关元素

  声明数组:declare -a arrayName

  初始化:各元素间使用空白字符分隔

      arrayName=('a' 'b' 'c')

      arrayName=([index]='a' [index]='b')

      arrayName[0]='a' ; arrayName[1]='b'

      获取数组中有效元素的个数:${#arrayName[@]},${#arrayName[*]}

      获取某一元素中字符串的长度:${#arrayName[index]} (index=0,1,2)

 

bash伪随机数生成器:$RANDOM

 叫号小脚本

#!/bin/bash
#
students=('a' 'b' 'c' 'd' 'e' 'f' 'g')
for i in {1..3};do
        pick=$[$RANDOM%${#students[@]}]
        echo ${students[$pick]}
        unset students[$pick]
        students=(${students[@]})
done

  

用数组实现冒泡排序的小脚本

#!/bin/bash
#
number=(5 6 7 4 3 11 9)
for i in `seq 0 $[${#number[@]}-1]`;do
        dbnumber=${number[$i]}
        for u in `seq $[$i+1] $[${#number[@]}-1]`;do
                if [ $dbnumber -lt ${number[$u]} ];then
                        continue
                else
                        sourcenumber=$dbnumber
                        dbnumber=${number[$u]}
                        number[$i]=$dbnumber
                        number[$u]=$sourcenumber
                fi
        done
done
echo ${number[@]


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

使用关联数组前应该先声明 declare -A array

然后就可以像使用普通数组一样使用关联数组了,如下所示:

 
  1. array["jim"]=158  
  2. array["amy"]=168  
或者直接使用内嵌“索引-值”列表法:

 

 
  1. array=(["jim"]=158 ["amy"]=168)  
遍历array:

 

 

[java] view plain copy
 
  1. for key in ${!array[*]}  
  2. do  
  3.     echo $key  
  4. done  
使用下标遍历array:

 

 

[java] view plain copy
 
  1. for i in "${!array[@]}"  
  2. do  
  3.     echo ${array[$i]}  
  4. done  
其他语法如下:

 

 

[java] view plain copy
 
  1. echo ${!array[*]}   #取关联数组所有键  
  2. echo ${!array[@]}  #取关联数组所有键  
  3. echo ${array[*]}       #取关联数组所有值  
  4. echo ${array[@]}      #取关联数组所有值  
  5. echo ${#array[*]}  #取关联数组长度  
  6. echo ${#array[@]} #取关联数组长度  

  

posted @ 2017-02-10 17:32  黑夜不黑  阅读(161)  评论(0编辑  收藏  举报