当前位置:   article > 正文

【CentOS Linux 7】实验2【Shell编程及应用】_使用for语句创建一个shell程序,其功能为1+2+3+4+5+…+n代码

使用for语句创建一个shell程序,其功能为1+2+3+4+5+…+n代码
  1. 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
  2. 【CentOS Linux 7】实验2【Shell编程及应用】
  3. 【CentOS Linux 7】实验3【用户组群管理、磁盘分区及文件系统管理】
  4. 【CentOS Linux 7】实验4【Linux网络应用、Linux下C语言编程
  5. 【CentOS Linux 7】实验5【安装VScode,并用VScode编写HTML网页】

目   录

【实验目的】

【实验步骤】

(1)使用for语句创建一个shell程序,其功能为1+2+3+…+n。

(2)给下列程序加上注释

(3)从键盘输入三个数并进行升序排序,然后输出到屏幕。

(4)给下列程序加上注释

(5)打印九九乘法表

(6)给下列程序加上注释

(7)给下列程序加上注释

(8)给下列程序加上注释

(9)打印斐波那契数列

【实验总结】


【实验目的】

  1. Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务;
  2. 学会shell编程的变量、表达式、顺序、选择、循环及函数的使用方法;
  3. 学会编写基本的SHELL应用程序。

【实验步骤】

(1)使用for语句创建一个shell程序,其功能为1+2+3+…+n。

程序源代码为:

  1. #!/bin/bash    # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
  2. read -p "what's n? :" n         # read-p 后面跟提示信息,即在输入前打印提示信息
  3. s=0                            # 初始化累加和
  4. for (( i=1; i<=$n; i=i+1))     # for循环,用来累加和
  5. do
  6. s=$(( $s+$i ))             # 增加s的值
  7. done
  8. echo "1+2+...+$n = $s"        # 输出累加和s

运行截图为:

(2)给下列程序加上注释

  1. #!/bin/bash    # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
  2. num=$[RANDOM%100+1]   # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数
  3. echo "$num"           # echo 命令用于向窗口输出 产生的随机数。
  4. while  :             # while循环语句
  5. do
  6.     read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
  7. # 使用 read 提示用户猜数字;read-p 后面跟提示信息,即在输入前打印提示信息
  8.     if [ $cai -eq $num ]        #if条件语句;如果 随机数 等于 用户所输入的数字
  9.     then
  10.        echo "恭喜,猜对了"      #if语句,命令行1:输出“恭喜,猜对了”
  11.        exit                     #exit命令用于退出目前的shell程序
  12.     elif [ $cai -gt $num ]      #if语句,命令行2
  13.     then
  14.            echo "Oops,猜大了"
  15.     else
  16.            echo "Oops,猜小了"
  17.     fi                          # if else-if else 语法格式 终止
  18. done                            # while循环语句 终止

(3)从键盘输入三个数并进行升序排序,然后输出到屏幕。

程序源代码为:

  1. #!/bin/bash
  2. read -p "请输入一个整数:" num1     # 从命令行输入1个数字
  3. read -p "请输入一个整数:" num2     # 从命令行输入1个数字
  4. read -p "请输入一个整数:" num3     # 从命令行输入1个数字
  5. tmp=0    # 定义1个临时变量存放数据
  6. # 将num1和num2进行比较,如果num1大于num2,将num1和num2的值对调
  7. if [ $num1 -gt $num2 ];then
  8.     tmp=$num1
  9.     num1=$num2
  10.     num2=$tmp
  11. fi
  12. if [ $num1 -gt $num3 ];then     # 如果num1大于num3,将num1和num3的值对调
  13.         tmp=$num1
  14.         num1=$num3
  15.         num3=$tmp
  16. fi
  17. if [ $num2 -gt $num3 ];then    # 如果num2大于num3,将num2和num3的值对调
  18.         tmp=$num2
  19.         num2=$num3
  20.         num3=$tmp
  21. fi
  22. echo "排序后数据(从小到大)为:$num1,$num2,$num3"

运行截图为:

(4)给下列程序加上注释

  1. #!/bin/bash    # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
  2. game=(石头 剪刀 布)      #定义数组,保存所有出拳的可能性;0:石头,1:剪刀,2:布
  3. num=$[RANDOM%3]         #随机数0 1 2
  4. computer=${game[$num]}  #通过 随机数,获取计算机的出拳手势
  5. echo "请根据下列提示选择您的出拳手势"
  6. echo "1.石头"
  7. echo "2.剪刀"
  8. echo "3.布"
  9. read -p "请选择 1‐3:" person   #read-p 后面跟提示信息,提示用户出拳
  10. #通过case语句判断用户输入的值是1、2还是3,根据不同的输入 输出 不同的结果
  11. case  $person  in
  12. 1)
  13.   if [ $num -eq 0 ]     #如果电脑产生的随机数是0,则 平局
  14.   then
  15.      echo "平局"
  16.   elif [ $num -eq 1 ]   #如果电脑产生的随机数是1,则 用户赢
  17.   then
  18.      echo "你赢"
  19.   else
  20.      echo "计算机赢"    #不符合以上两种情况,则 计算机赢
  21.   fi;;
  22. 2)  
  23.   if [ $num -eq 0 ]     #如果电脑产生的随机数是0,则 计算机赢
  24.   then
  25.      echo "计算机赢"
  26.   elif [ $num -eq 1 ]   #如果电脑产生的随机数是1,则 平局
  27.   then
  28.      echo "平局"
  29.   else
  30.      echo "你赢"        #不符合以上两种情况,则 用户赢
  31.   fi;;
  32. 3)
  33.   if [ $num -eq 0 ]     #如果电脑产生的随机数是0,则 用户赢
  34.   then
  35.      echo "你赢"
  36.   elif [ $num -eq 1 ]             #如果电脑产生的随机数是1,则 计算机赢
  37.   then
  38.      echo "计算机赢"
  39.   else
  40.      echo "平局"                  #不符合以上两种情况,则 平局
  41.   fi;;
  42. *)                                #case命令的最后运算式
  43.   echo "必须输入 1‐3 的数字!"   #若用户输入错误,则输出 提示信息
  44. esac

(5)打印九九乘法表

程序源代码为:

  1. #!/bin/bash
  2. echo -e "\n"                          #换行
  3. for((i=1;i<=9;i++))                   #第一重for循环
  4. do
  5.    for((j=1;j<=i;j++))                #第二重for循环
  6.    do
  7.       echo -n -e "$j*$i="$[j*i]"\t"   #打印九九乘法表
  8.    done
  9.    echo -e "\n"                       #换行
  10. done

运行截图为:

(6)给下列程序加上注释

  1. #!/bin/bash    # “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行
  2. #  ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)
  3. for i in "ls *.$1"
  4. do
  5.    mv $i ${i%.*}.$2  # mv命令用来为文件或目录改名、或将文件或目录移入其它位置
  6. done

(7)给下列程序加上注释

  1. #!/bin/bash
  2. read -p "请输入一个年份:" year    # 使用 read-p 提示用户输入年份
  3. if [ "$year" = "" ];then         #如果用户没有输入任何内容,则输出提示信息
  4.     echo "没有输入年份"
  5.     exit
  6. fi
  7. if [[ "$year" =~ [a‐Z] ]];then #如果用户输入的是a-Z中的字符,则输出提示信息
  8.     echo "你输入的不是数字"
  9.     exit                        # exit命令用于退出目前的shell
  10. fi
  11. if [ $[year % 4] -eq 0 ] && [ $[year % 100] -ne 0 ];then #根据用户输入,判断闰年
  12.     echo "$year年是闰年"            #能被4整除且不能被100整除的年份,是闰年
  13. elif [ $[year % 400] -eq 0 ];then   #能被400整除的年份,是闰年
  14.     echo "$year年是闰年"
  15. else
  16.     echo "$year年不是闰年"
  17. fi

(8)给下列程序加上注释

  1. #!/bin/bash
  2. for i in {1..3}             #for循环;用户有3次输入用户名与密码的机会
  3. do
  4.     read -p "请输入用户名:" user #read-p 后面跟提示信息,即在输入前打印提示信息
  5.     read -p "请输入密码:"   pass
  6. if [ "$user" == 'tom' -a "$pass" == '123456' ];then
  7. #若用户名与密码匹配,则执行下列语句
  8.         echo "Login successful"
  9.        exit                     # exit命令用于退出目前的shell
  10. fi
  11. done
  12. echo "Login Failed"

(9)打印斐波那契数列

程序源代码为:

  1. #!/bin/bash
  2. #输入数字n显示斐波那契数列的前n项
  3. a=1                            #第一项
  4. b=1                  #第二项
  5. c=0                  #中间变量,用来储存a的值
  6. Fibonacci=0          #斐波那契数列的第n项
  7. read -p "输入数字n,显示数列的前n项" n
  8. #如果n<=3则输出前三项
  9. if [ "${n}" -le "3" ]; then
  10.         case ${n} in
  11.                 "1")
  12.                         Fibonacci=${a}
  13.                         echo -e "${Fibonacci}"
  14.                         ;;
  15.                 "2")
  16.                         Fibonacci=${a}
  17.                         echo -e "${Fibonacci}"
  18.                         echo -e "${Fibonacci}"
  19.                         ;;
  20.                 "3")
  21.                         Fibonacci=${a}
  22.                           echo -e "${Fibonacci}"
  23.                         echo -e "${Fibonacci}"
  24.                         Fibonacci=$((${a}+${b}))
  25.                         echo -e "${Fibonacci}"
  26.         esac
  27. fi
  28. #如果n>=4,输出剩余的项
  29. if [ "${n}" -ge "4" ]; then
  30.         Fibonacci=${a}
  31.         echo -e "${Fibonacci}"
  32.         echo -e "${Fibonacci}"
  33.         Fibonacci=$((${a}+${b}))
  34.         echo -e "${Fibonacci}"
  35.         for ((i=4; i<=${n}; i=i+1 ))
  36.         do
  37.              c=${a}
  38.              a=${b}
  39.              b=$((${c}+${b}))
  40.                           Fibonacci=$((${a}+${b}))
  41.             echo -e "${Fibonacci}"
  42.         done
  43. fi

运行截图为:

【实验总结】

通过本次实验,我对Shell更加熟悉。通过实验,我了解到:Shell脚本可以作为命令语言互动式地解释和执行用户输入的命令,还能够用来进行程序设计,它提供了定义变量和参数的手段以及丰富的过程控制结构。

在实验中,我体会到了Shell的灵活性。Shell程序基本语法较为简单,主要由开头部分、注释部分以及语句执行部分组成。它还可以提供说明与使用变量的功能。另外,在Shell中,所有变量的取值都是一个字符,我认为 这非常方便。Shell在开始执行时,就已经定义了一些与系统的工作环境相关的变量,如:HOME:用于保存注册目录的完全路径名;PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。

此次实验,收获甚多,课下我会继续努力,多查资料,勤于练习!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/183838
推荐阅读
相关标签
  

闽ICP备14008679号