实验三 shell 脚本实验

需要完整报告请在我主页里面的资源下载

湖北汽车工业学院实验报告

实验三  shell 脚本实验

一、实验目的

1.掌握bash的基本语法。

2.掌握bash的建立和执行方式。

3.熟悉shell脚本编程。

二、实验内容

1.编写Shell脚本文件,该文件的功能:从键盘输入年月,然后自动显示该年份下该月的日历,然后再显示系统当前的日期和时间。要求用3种不同方式执行该脚本。(3分)

参考程序:

$vi mycal(进入vi环境输入下列脚本程序)

        echo “Please input year:”

read year       #从键盘读入年份给year变量

echo “Please input month:”

read month      #从键盘读入月份给month变量

cal $month $year

date

:wq!回车(保存文件并退出vi)

执行脚本方法:

方法一:输入定向到shell脚本(格式:$bash<脚本名)

$bash<mycal

结果:不能执行脚本。

原因: 因为输入命令有错误                        

方法二:以脚本名作为bash参数(格式:$bash  脚本名 [参数])

$bash mycal 回车

显示:

显示:

结果:

       

方法三:将shell脚本的权限设置为可执行,然后在提示符下直接执行。(用chmod命令)

$chmod a+x mycal     #把mycal设置为对所有用户都有“执行”权限。

        $PATH=$PATH:.  #将脚本所在的目录添加到命令搜索路径(PATH)中。

$mycal               #输入脚本名直接执行该脚本

显示:

显示:

结果:

注:cal 命令显示公园1~9999年中任意一年或任意一个月的日历。如果不带任何参数,则显示当前月份的日历。如果只有一个参数,则该参数被解释为年份。当有两个参数时,则第一个参数表示月份,第二个参数表示年份。两个参数之间应留有空格。年份要使用完整形式,如2006,不能写成06。

2.编写Shell脚本文件,要求从命令行接收数值参数,并计算这些参数的和。(1分)

参考程序:

$vi  OSsy3_3(进入vi环境输入下列脚本程序)

x=0         #累加器变量清零

for y in $*    #变量依次取位置参数的值,然后执行循环体中的命令表,至所有位置参数取完为止。

do

x=`expr $x + $y`   #计算表达式x+y,并把计算结果赋给x。(累加器x=x+y)

done

echo "The sum is:$x"

:wq!回车(保存文件并退出vi)

执行脚本:

显示结果:(可截屏)

3.编写Shell脚本文件,使用case结构创建一个简单的菜单,屏幕显示菜单:

a. Current date and time

b. User currently logged in

c. Name of the working directory

d. Contents of the working directory

Enter a,b,c or d:

根据用户输入选项做相应操作,要求可以连续选择直到想退出时才退出。(1分)

参考程序:

while true

do

echo -e "\n COMMAND MENU\n"

echo -e "1. Current date and time\n"

echo -e "2. User currently logged in\n"

echo -e "3. Name of the working directory\n"

echo -e "4. Contents of the working directory\n"

    echo -e "5. Exit\n"

echo -n "Enter selection:"

    while true

    do

    read sel

    if [[ "$sel" -lt 1 || "$sel" -gt 5 ]]

       then

        echo "Error input! Please input again:"

       else

 break

    fi

done     

case "$sel" in

  1) date;;

  2) who;;

  3) pwd;;

  4) ls;;

  5) exit;;

  *) echo -e "There is no selection $select\n";;

esac

  echo

done

执行脚本:

显示结果:

4. 编写Shell脚本文件,要求从命令行输入5个数,在屏幕上显示其中最大数和最小数。(思考:如果改成从键盘输入给变量,而不是从命令行给出,如何实现?)(2分)

COUNT=1

SUM=0

MIN=0

MAX=100

while [ $COUNT -le 5 ]; do

    read -p "请输入5个整数:" INT

    if [[ ! $INT =~ ^[0-9]+$ ]]; then

        echo "输入必须是整数!"

        exit 1

    elif [[ $INT -gt 100 ]]; then

        echo "输入必须是100以内!"

        exit 1

    fi

    SUM=$(($SUM+$INT))

    [ $MIN -lt $INT ] && MIN=$INT

    [ $MAX -gt $INT ] && MAX=$INT

    let COUNT++

done

echo "sum: $SUM"

echo "min: $MIN"

echo "max: $MAX"

5. 编写Shell脚本文件,要求输入自己生日的月份和日期,计算还有多少天是自己的生日,如果生日日期已过,给出提示信息。(2分)

#!/bin/sh

read -p "Input your birthday(YYYYmmdd):" date1

m=`date --date="$date1" +%m`   

d=`date --date="$date1" +%d`    

date_now=`date +%s`      

y=`date +%Y`            

birth=`date --date="$y$m$d" +%s`     

internal=$(($birth-$date_now))       

 if [ "$internal" -lt "0" ]; then           

     birth=`date --date="$(($y+1))$m$d" +%s`      

     internal=$(($birth-$date_now))       

 fi

awk -vinternal=$internal 'BEGIN{d=int(internal/60/60/24);h=int((internal-24*60*60*d)/3600);

print "There is : "d" days "h" hours."}'

三、实验总结和体会(1分

答:在本次实验中我掌握bash的基本语法在执行语句时根据shell脚本编程的文件设置参数,同时也需要熟悉shell脚本编程,根据题目需要来编写文件;最后掌握bash的建立和执行方式;本次实验收获很多,在课下也有练习,同时也感谢老师的辛勤付出,在今后的学习中也会更加努力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件源码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值