一. 实验目的
- 目的1,掌握shell的基本数据类型及基本语法;
- 目的2,掌握shell基本运算符号及的控制语句;
- 目的3,能够自主进行shell脚本的编写。
二. 实验内容
- 内容1,自己编写一个shell脚本,在/home/shiyanlou/Code目录新建mkdirps.sh实现将当前进程情况写入一个pstxt.txt的记事本。
- 内容2,在Code目录下建立isfd.sh脚本,判断参数字符串是目录、文件亦或是不存在。
- 内容3,写一个猜数字的shell脚本游戏脚本名称mygame.sh,利用RANDOM产生一个随机数,请用户猜测,如果不对,提示用户太大或太小,直到猜中为止。
- 内容4,编写一个脚本huaquan.sh实现“剪刀、石头、布”划拳游戏,实现人和电脑对抗。
三. 实验步骤
1.步骤1:编写一个shell脚本,在/home/shiyanlou/Code目录新建mkdirps.sh,写入一个pstxt.txt的记事本。


2.步骤2:在Code目录下建立isfd.sh脚本,并用一下代码实现
#!/bin/bash
if [ $# -lt 1 ]
then
echo "agrment less !"
exit 0
else
for temp in
do
str="/home/shiyanlou/Code/$temp"
if [ -f $str ]
then
echo "$temp is file !"
else
if [ -d $str ]
then
echo "$temp is dir !"
else
echo "$temp error !"
fi
fi
done
fi
copy
3.步骤3:用以下代码实现
count=0
echo "正在生成一个随机数......"
rd=$(($RANDOM%10))
echo $rd
echo "随机数生成完毕,请开始你的头脑风暴吧。"
while [ 1 ]
do
read userguess
if [ $userguess -lt $rd ]
then
echo "大兄弟,你猜小了,再来一次!"
else
if [ $userguess -gt $rd ]
then
echo "大兄弟,你猜大了,再猜一次"
else
echo "恭喜你,大兄弟,你才对了,你总共猜了$count次!"
fi
fi
count=`expr $count + 1`
done
copy
4.步骤4:用一下代码实现猜拳游戏
showui()
{
echo “==============================”
echo “= 1 剪刀 2 石头 3 布 =”
echo “==============================”
}
count=0 #总共玩的局数
countc=0 #平局数
countp=0 #赢局数
while [ 1 ]
do
coumputerguess=$(($RANDOM%3+1))
showui
#cho $coumputerguess
read -p "请您出拳" yourguest
case $yourguest in
1 ) if [ $coumputerguess = 1 ]
then
echo "你们都是剪刀,平局!"
count=`expr $count + 1 `
else
if [ $coumputerguess = 2 ]
then
echo "你们剪刀,电脑是石头,电脑赢!"
countc=`expr $countc + 1 `
count=`expr $count + 1 `
else
if [ $coumputerguess = 3 ]
then
echo "你剪刀,电脑是布,本局你赢!"
countp=`expr $countp + 1 `
count=`expr $count + 1 `
else
echo "输入非法,重新再来!"
fi
fi
fi
;;
2 ) if [ $coumputerguess = 1 ]
then
echo "你是石头,电脑是剪刀,你赢啦!"
countp=`expr $countp + 1 `
count=`expr $count + 1 `
else
if [ $coumputerguess = 2 ]
then
echo "你们都是石头,平局!"
count=`expr $count + 1 `
else
if [ $coumputerguess = 3 ]
then
echo "你是石头,电脑是布,你输啦!"
countc=`expr $countc + 1 `
count=`expr $count + 1 `
else
echo "输入非法,重新再来!"
fi
fi
fi
;;
3 ) if [ $coumputerguess = 1 ]
then
echo "你是布,电脑是剪刀,电脑赢啦!"
countc=`expr $countc + 1 `
count=`expr $count + 1 `
else
if [ $coumputerguess = 2 ]
then
echo "你都是布,电脑是石头,你赢啦!"
countp=`expr $countp + 1 `
count=`expr $count + 1 `
else
if [ $coumputerguess = 3 ]
then
echo "你们都是布,平局!"
count=`expr $count + 1 `
else
echo "输入非法,重新再来!"
fi
fi
fi
;;
3) echo “出错啦,只有剪刀、石头和布,你是外星人吗?”
esac
tt=`expr $count - $countp - $countc `
echo "当前已共玩 $count 局,其中您赢 $countp 局,电脑赢 $countc 局,平 $tt 局 。 "
done
tt=`expr $count - $countp - $countc `
echo "共玩 $count 局,其中您赢 $countp 局,电脑赢 $countc 局"
copy
效果图:

四. 实验总结
1.难点: 自定义变量,赋值号左右不能有空格,代码格式须格外注意以及test命令的使用。
2.总结,通过此次实验使我学会并掌握了shell的基本数据类型及基本语法以及shell基本运算符号及的控制语句,但对shell编程还有些生疏须多加练习。
|