脚本模拟霜色球:
脚本执行效果
[root@win7]# sh fucai.sh
出号中
Red Balls:30 6 26 12 28 7
Blue Ball:15
现在有个问题,红色球,会出现重号,要怎么解决?
有个思路,先让红求号码换行输出,然后sort一下,然后unic -c 一下,然后wc -l 一下,看wc结果是不是6,如果小于6,
就循环。
- #!/bin/bash
- #仅供娱乐
- echo "出号中"
- echo -n "Red Balls:"
- for i in $(seq 6)
- do
- sleep 2
- for j in $(($RANDOM%33+1 ))
- do
- echo -n "$j "
- done
- done
- echo
- echo -n "Blue Ball:"
- sleep 3
- echo "$(($RANDOM%16+1 ))"
[root@win7]# sh fucai.sh
出号中
Red Balls:30 6 26 12 28 7
Blue Ball:15
现在有个问题,红色球,会出现重号,要怎么解决?
有个思路,先让红求号码换行输出,然后sort一下,然后unic -c 一下,然后wc -l 一下,看wc结果是不是6,如果小于6,
就循环。
0
shell有一个环境变量RANDOM,范围是0--32767
如果我们想要产生0-25范围内的数:$(($RANDOM%26)) 在$(()) 是可以省略取值的$符号的。
(All tokens in the expression undergo parameter expansion, string expansion, command substitu-tion, and quote removal.)
用这个环境变量对26取模即可。
如果想得到1--68范围内的数 : $(($RANDOM%33+1 ))
如果想得到6--87范围内的数 : $(($RANDOM%82+6 ))
如果我们想要产生0-25范围内的数:$(($RANDOM%26)) 在$(()) 是可以省略取值的$符号的。
(All tokens in the expression undergo parameter expansion, string expansion, command substitu-tion, and quote removal.)
用这个环境变量对26取模即可。
如果想得到1--68范围内的数 : $(($RANDOM%33+1 ))
如果想得到6--87范围内的数 : $(($RANDOM%82+6 ))
0
#!/bin/bash
echo -n "Red Balls:"
touch temp.ini
for i in $(seq 6)
do
a=$(($RANDOM%33+1 ))
grep -w $a temp.ini 1>/dev/null 2>&1
while [ $? = 0 ]
do
a=$(($RANDOM%33+1 ))
grep -w $a temp.ini 1>/dev/null 2>&1
done
echo -n "$a "
echo "$a" >> temp.ini
done
echo
echo "Blue Ball:$(($RANDOM%16+1 ))"
rm -rf temp.ini
echo -n "Red Balls:"
touch temp.ini
for i in $(seq 6)
do
a=$(($RANDOM%33+1 ))
grep -w $a temp.ini 1>/dev/null 2>&1
while [ $? = 0 ]
do
a=$(($RANDOM%33+1 ))
grep -w $a temp.ini 1>/dev/null 2>&1
done
echo -n "$a "
echo "$a" >> temp.ini
done
echo
echo "Blue Ball:$(($RANDOM%16+1 ))"
rm -rf temp.ini
编辑回复