shell 数组
数组简介
数组: 数组名+索引 数组元素 索引的表示方式: 数字索引:a[index] a[0], a[1] bash 4.0的关联数组 a[hello], a[hi] declare -a -A 支持稀疏格式: 仅一维数组 数组的赋值: 一次对一个元素赋值: a[0]=$RANDOM ... 一次对全部元素赋值: a=(red blue yellow green) 按索引进行赋值: a=([0]=green [3]=red [2]=blue [6]=yellow) 命令替换: 用户输入: read -a ARRAY 数组的访问: 用索引访问: ARRAY[index] 数组的长度: ${#ARRAY[*]} ${#ARRAY[@]} 练习:写一个脚本,生成10个随机数,保存至数组中;而后显示数组下标为偶数的元素; for i in {0..9}; do num[$i]=$RANDOM done 从数组中挑选某元素: ${ARRAY[@]:offset:number} 切片: offset: 偏移的元素个数 number: 取出的元素的个数 ${ARRAY[@]:offset}:取出偏移量后的所有元素 ${ARRAY[@]}: 取出所有元素 数组复制: 要使用${ARRAY[@]} $@: 每个参数是一个独立的串 $*: 所有参数是一个串 向数组追加元素: 示例:复制一个数组中下标为偶数的元素至一个新数组中 #!/bin/bash declare -a mylogs logs=(/var/log/*.log) echo ${logs[@]} for i in `seq 0 ${#logs[@]}`; do if [ $[$i%2] -eq 0 ];then index=${#mylogs[@]} mylogs[$index]=${logs[$i]} fi done echo ${mylogs[@]} 从数组中删除元素: unset ARRAY[index]
简单示例
生成10个随机数,升序排序 #!/bin/bash for((i=0;i<10;i++)) do rnd[$i]=$RANDOM done echo -e "total=${#rnd[@]}\n${rnd[@]}\nBegin to sort" for((i=9;i>=1;i--)) do for((j=0;j<i;j++)) do if [ ${rnd[$j]} -gt ${rnd[$[$j+1]]} ] ;then swapValue=${rnd[$j]} rnd[$j]=${rnd[$[$j+1]]} rnd[$[$j+1]]=$swapValue fi done done echo ${rnd[@]} 打印九九乘法表 #!/bin/bash for((i=1;i<=9;i++)) do strLine="" for((j=1;i<=9;j++)) do strLine=$strLine"$i*$j="$[$i*$j]"\t" [ $i -eq $j ] && echo -e $strLine && break done done