数组
数组:是一块同类型的连续空间
Shell定义: array=(元素1 元素2 ...)
引用某个元素内容:${数组名[下标]}(下标从0开始)
引用所有元素内容:${数组名[@]}
求出数组元素的个数:${#数组名[@]}
例题
1.打印九九乘法表
方法1:
# !/bin/bash
for ((i=1;i<=9;i++))
do
for((j=1;j<=i;j++))
do
printf "${i}*${j}=`expr ${i} \* ${j}` "
done
printf "\n"
done
方法2:
# !/bin/bash
for i in `seq 1 9`
do
for j in `seq 1 ${i}`
do
printf "${i}*${j}=`expr ${i} \* ${j}` "
done
printf "\n"
done
2.判断该数组是否存在某个元素
# !/bin/bash
array=("a" "b" "c" "d" "e" "f" "g")
read -p "输入要查找的元素" var
for (( i=0;i<${#array[@]};i++))
do
if test ${var} = ${array[i]}
then
echo "${var}元素存在"
break
fi
done
if test ${i} -eq ${#array[@]}
then
echo "元素不存在"
fi
3.同上题(折半查找)
升序:
# !/bin/bash
array=(1 2 3 4 5 6 7 8 9 10 11)
left=0
right=10
mid=0
read -p "输入要查找的元素" key
for((left=0,right=10;left<=right; ))
do
mid=`expr ${left} + ${right}`
mid=`expr ${mid} / 2`
if test ${key} -eq ${array[mid]}
then
echo "${key}存在该数组中"
break
elif test ${key} -gt ${array[mid]}
then
left=`expr ${mid} + 1`
else
right=`expr ${mid} - 1`
fi
done
if test $left -gt $right
then
echo "${key}不存在"
fi
降序:
# !/bin/bash
array=(9 8 7 6 5 4 3 2 1)
left=0
right=8
mid=0
read -p "输入要查找的元素" key
for ((left=0,right=8;left<=right; ))
do
mid=`expr ${left} + ${right}`
mid=`expr ${mid} / 2`
if test ${key} -eq ${array[mid]}
then
echo "${key}存在该数组中"
break
elif test ${key} -gt ${array[mid]}
then
right=`expr ${mid} - 1`
else
left=`expr ${mid} + 1`
fi
done
if test ${left} -gt ${right}
then
echo "${key}不存在"
fi