lanqiao3632485354 L5 2022-11-29 17:13:29 shell编程
147 0

“嵌入式Linux操作系统实验(2022秋)”实验报告

shell编程
实验名称 shell编程
实验类型 验证性实验
时间 10.16

一. 实验目的

  1. 目的1,掌握shell的基本数据类型及基本语法;
  2. 目的2,掌握shell基本运算符号及的控制语句;
  3. 目的3,能够自主进行shell脚本的编写。

二. 实验内容

  1. 内容1,自己编写一个shell脚本,在/home/shiyanlou/Code目录新建mkdirps.sh实现将当前进程情况写入一个pstxt.txt的记事本。
  2. 内容2,在Code目录下建立isfd.sh脚本,判断参数字符串是目录、文件亦或是不存在。
  3. 内容3,写一个猜数字的shell脚本游戏脚本名称mygame.sh,利用RANDOM产生一个随机数,请用户猜测,如果不对,提示用户太大或太小,直到猜中为止。
  4. 内容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
    # echo "test1"
    str="/home/shiyanlou/Code/$temp"
    # echo $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:用以下代码实现


  #!/bin/bash
  # this is game.sh
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:用一下代码实现猜拳游戏


#!/bin/bash
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编程还有些生疏须多加练习。

最新评论
暂无评论~