分类: 网络与安全
2012-05-09 15:56:41
一个朋友提的shell脚本需求。写完了一直没整理。
需求:
1到100,每当数到12个数去掉一个(可以理解成计数器,第到12重置)。直到最后只省下一个数。比如第一次,12、24、36、48、60、72、84、96被去掉。到100时,计数器为4,那么,轮到1时,计数器为5。
脚本如下:
对shell数组不太熟悉的可以参考下。
简要说明如下
LIST数组初始为1到100
count为计数器,array_count是数组下标,用于逢12的时候删除数组内的值
modify函数的作用是踢出逢12的数组内容。
while循环就是取只剩到最后的那个数
#!/bin/bash
count=0
LIST=(`seq 1 100`)
modify(){
array_count=0
for i in ${LIST[@]} ;do
((count++))
if [ $count -eq 12 ];then
count=0
unset LIST[$array_count]
fi
((array_count++))
done
LIST=(${LIST[*]})
}
# script start
while true;do
len=${#LIST[@]}
if [ $len -eq 1 ];then
echo ${LIST[@]}
break
else
modify
fi
done
This entry w