数组简介
数组:
数组名+索引
数组元素
索引的表示方式:
数字索引: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