linux脚本猜数字游戏,SHELL脚本-猜数字游戏

猜数字游戏:  随机数字为7位数   猜7次   中间不对 会有例如 : 1A2B的提示, A代表数字正确,位置也正确,  B代表包含多少个数字正确但位置不正确

#!/bin/bash

#

# 随机生成四位数

function randomNumber(){

a=(0 1 2 3 4 5 6 7 8 9)

for((i=1;i<5;i++));do

echo -n ${a[$RANDOM % ${#a[*]}]}    -------- 利用系统环境变量RANDOM获取随机数,RANDOM的范围是0-32767;   echo 不换行循环输出四个数来获取随机四位数

done

}

RANDOM_NUMBER=`randomNumber`

# 测试显示数字,可删除

# echo $RANDOM_NUMBER

# echo '--------------------------------------------'

# A 为数字和位置正确   B 为数字正确但位置不对

# 总共猜7次

TOTAL_SEC=7

SEC=0

while [ $SEC -lt $TOTAL_SEC ];do

read -p "Please input four-digit number: " NUM

# 定义标志位,为后面输出几个A 几个B做统计

FLAG_A=0

FLAG_B=0

# 判断输入是否为四个数字

if [[ $NUM =~ ^[0-9]\{4\}$ ]];then

# 判断用户输入的数字,最终给出多少个A,多少个B

for((i=0;i

if [ $NUM -eq $RANDOM_NUMBER ];then

echo '-------------------------------------------------------'

echo -e "\033[0;31;1mCongratulations!Get it Right!The correct number is: ${RANDOM_NUMBER} \033[0m"

exit

else

if [ ${NUM:$i:1} -eq ${RANDOM_NUMBER:$i:1} ];then       ---------- ${NUM:$i:1}  字符串处理,在字符串$NUM 中从位置$i开始提取长度为1的字串

# 标记多少个A

FLAG_A=$(($FLAG_A+1))

else

# 标记多少个B

a=`echo ${RANDOM_NUMBER} | grep -o ${NUM:$i:1} | wc -l`

#                               echo ${RANDOM_NUMBER} | grep ${NUM:$i:1} >/dev/null 2>&1 && FLAG_B=$(($FLAG_B+1))

FLAG_B=$(($FLAG_B+$a))

fi

# 用户输入数字后判断正确与否的结果

if [[ $i -eq 3 && $SEC -ne 6 ]];then

echo ''

echo -e "\033[0;31;1m${FLAG_A}A${FLAG_B}B\033[0m"

fi

fi

done

else

echo ''

echo -e '\033[0;31;1mInput error,Please input four-digit number again!\033[0m'

fi

SEC=$(($SEC+1))

#提示为最后一次回答

if [ $SEC -eq 6 ];then

echo -e '\033[0;31;1mOne Last Chance!\033[0m'

fi

done

# 输入7次后全部不正确,打印正确答案

if [ $SEC -eq 7 ];then

echo ''

echo -e "\033[0;31;1mNumber is not correct! Number is: ${RANDOM_NUMBER}\033[0m"

exit

fi

此脚本有很多不足地方,望指正.