linux脚本猜数字游戏,Shell脚本实现的猜数字小游戏

生成的密码和用户输入可以接受重复数字。

所以相对一般规则的猜数字可能难度要大不少。

本版本规则:

A--数字对,位置也对

B--排除A的结果后,数字对,但位置不对

开始后,系统化初始化一个4位可重复数字,如“1223”。假设用户第一次输入“1234”,那么系统将提示“2A1B”,前两位数字“12”相同并且位置也相同,为“2A”。后两位数字中,用户输入的“3”与密文中“3”相同,但两者位置不同,则为“1B”,最终结果为“2A1B”。

再假设用户此时输入“1232”,那么结果则为“2A2B”,计算方法与前次一样。

代码如下:#!/bin/bash

clear

echo

echo "###################################################################"

echo "# this is a bash-shell game write by Email:breeze7086@gmail.com #"

echo "# the game called *digits*,and this version have repeated numbers #"

echo "# version 1.0 #"

echo "###################################################################"

echo -e "nn"

declare INPUT

declare PASSWORD

declare A

declare B

declare X

declare Y

declare LOOP

#This funtion init the variable PASSWORD that user need to guess

init_password()

{

PASSWORD=`echo $(($RANDOM%10000))`

echo $PASSWORD | grep '^[0-9]{4}$' >/dev/null 2>&1

if [ $? != 0 ]

then

init_password

else

input

fi

}

#This funtion accept the input from user's keyboard

input()

{

echo -n "please input a number between 0000-9999:"

read INPUT

echo $INPUT | grep '^[0-9]{4}$' >/dev/null 2>&1

if [ $? != 0 ]

then

echo "retry a number between 0000-9999 and do not input a char"

input

else

judge

fi

}

#This funtion is the main funtion

judge()

{

X=$INPUT

Y=$PASSWORD

while [ $INPUT != $PASSWORD ]

do

A=0

B=0

judge_a

judge_b

LOOP=`expr $LOOP + 1`

echo "****************************"

echo "* "$A"A"$B"B *"

echo "****************************"

input

done

}

#This funtion count the variable A's value

judge_a()

{

for i in `seq 4`

do

VAR_INPUT=`expr substr "$X" $i 1`

for j in `seq 4`

do

VAR_PASSWORD=`expr substr "$Y" $j 1`

if [[ $VAR_INPUT = $VAR_PASSWORD && $VAR_INPUT != "" && $VAR_PASSWORD != "" && $i = $j ]]

then

A=`expr $A + 1`

X=`expr substr $X 1 "$[$i-1]"``expr substr $X "$[$i+1]" 4`

Y=`expr substr $Y 1 "$[$i-1]"``expr substr $Y "$[$i+1]" 4`

judge_a

fi

done

done

}

#This funtion count the variable B's value

judge_b()

{

for i in `seq 4`

do

VAR_INPUT=`expr substr "$X" $i 1`

for j in `seq 4`

do

VAR_PASSWORD=`expr substr "$Y" $j 1`

if [[ $VAR_INPUT = $VAR_PASSWORD && $VAR_INPUT != "" && $VAR_PASSWORD != "" ]]

then

B=`expr $B + 1`

X=`expr substr "$X" 1 "$[$i-1]"``expr substr "$X" "$[$i+1]" 4`

Y=`expr substr "$Y" 1 "$[$j-1]"``expr substr "$Y" "$[$j+1]" 4`

judge_b

fi

done

done

}

#This is the begin of script

LOOP=1

init_password

echo "#############################################"

echo "#congratulations!You have tried $LOOP times! #"

echo "# The password is $PASSWORD ! #"

echo "#############################################"

Shell中实现“多线程”执行脚本文件完美解决方案

即比如我有100个可执行文件,互相间没有特别的先后执行关系,如CODE:job_1job_2job_2.....job_100想用csh/bash来多线程调用执行。比如一次开5个线程,那么job_1,

Shell脚本实现批量添加用户

useradd.sh#!/bin/bashfornameintomjoyjohnmarkjamesdouseradd$nameecho"redhat"|passwd--stdin$namedone好了,执行结束后会自动新建用户tom、joy、john、mark、james,并且密码都设置

Shell实现识别物理cpu个数、核心数

如何识别物理cpu个数,几个核,是超线程还是多核心判断依据:1.具有相同coreid的cpu是同一个core的超线程。2.具有相同physicalid的cpu是同一颗cpu封装的线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值