1.随机选人(pickug.sh)
#!/bin/bash
# Script Name: pickusers.sh
# Author: Our RHCE Team
# Version: 0.0.01
# Created Time: 07/14/10 12:51:30
declare -a PICKED
declare -a USERS=("Zhaoguang" "LiangXin" "Debao" "LiDi" "Longfei" "Beidou" "Hongguang" "QingKai" "Ronghai" "Xiaoyu" "Huixu" "Pengju" "Jianying" "Xiaobing" "XuHong" "CuiCan" "Hongjun" "Yunchao" "Yaofeng" "ZhangYang" "Chunsheng" "Yongke" "YangChen" "Jixin" "Haoyuan" "Guanyu" "Yipin" "LiuYan")
declare -a GRPS=("First" "Second" "Third" "Forth" "Fifth")
comp() {
local SAME=0
local let I=0
if [ ${#PICKED[*]} -gt 0 ]; then
while [ $I -le ${#PICKED[*]} ];do
[ "$1" == "${PICKED[$I]}" ] && SAME=1 && break
let $((I++))
done
fi
if [ $SAME -eq 0 ]; then
local INDEX=$[${#PICKED[*]}+1]
PICKED[$INDEX]=$1
echo -e "\033[32m${PICKED[$INDEX]}\033[0m"
return 0
else
return 1
fi
}
pickusers() {
declare -i I=1
while [ $I -le $1 ]; do
INDEX=$((RANDOM%28))
comp ${USERS[$INDEX]}
if [ $? -eq 1 ];then
continue
else
let $((I++))
fi
done
}
pickgrps() {
declare -i I=1
while [ $I -le $1 ]; do
INDEX=$((RANDOM%5))
comp ${GRPS[$INDEX]}
if [ $? -eq 1 ];then
continue
else
let $((I++))
fi
done
}
while getopts ":u:g:hv" SWITCH; do
case $SWITCH in
v)
echo "Version: 0.0.01, Reporting Debug: oranix@126.com" ;;
h)
echo "Usage: `basename $0` -v -h -u [user_nums] -g [group_nums]" ;;
g)
echo "Congratulations, the following:"
pickgrps $OPTARG ;;
u)
echo "Congratulations, the following:"
pickusers $OPTARG ;;
*)
echo "Usage: `basename $0` -v -h -u [user_nums] -g [group_nums]" ;;
esac
done
注:RANDOM是系统自带的一个随机变量,RANDOM%28可以随机取到1-27的数值RANDOM%5可以随机取到1-4的任意一个值。
解析:此程序可以随机选取1-5的任意到个组:bash pickug.sh –g 3可以取到任意三组
还可以随机选人到个人: bash pickug.sh –u 5(随机选取五个人)
2。循环对比,数组中的值全部一样(comp.sh)
#!/bin/bash
# Script Name: comp.sh
# Author: Our RHCE Team
# Version: 0.0.01
# Created Time: 07/14/10 14:56:43
declare -a USERS
SAME=0
comp() {
local let I=0
if [ ${#USERS[*]} -gt 0 ]; then
while [ $I -le ${#USERS[*]} ];do
[ "$1" == "${USERS[$I]}" ] && SAME=1 && break
let $((I++))
done
fi
if [ $SAME -eq 0 ]; then
INDEX=$[${#USERS[*]}+1]
USERS[$INDEX]=$1
echo ${USERS[$INDEX]}
return 0
else
return 1
fi
}
comp Jerry
comp Jerry
echo ${USERS[0]}
echo ${USERS[1]}
3.
转载于:https://blog.51cto.com/rhlinux/350771