• 2025年8月19日 星期二

实验十二-Shell编程

6 月 10, 2023

一、实验目的

1.熟悉Linux中Shell脚本中从测试条件

2.掌握Linux中Shell脚本中的分支机构

3.掌握Linux中Shell脚本编的循环结构

4.掌握Linux中Shell脚本编的函数定义

二、实验内容

实验2.1 使用test进行条件测试

实验2.2 使用if、if-else、case三种分支结构

实验2.3 使用while、until、for三种循环结构

实验2.4 定义函数并使用

三、实验主要步骤

实验2.1

在work文件夹下书写一个myscript-test.sh,有以下要求

  1. 用read输入一个name变量,并提示“Please enter a file name:”
  2. 判断name变量是否为空,如果为空则输出“Name error”并退出,否则输出“Name check correct”(键盘输入data)
  3. 判断是否存在以上文件,如果不存在输入出“Without this file, creating…”并创建以上文件,如果存在则输出“File already exists”
  4. 用read输入一个A变量,并提示“Please enter the size of A:”
  5. 用read输入一个B变量,并提示“Please enter the size of B:”
  6. 比较A和B的大小,如果A大于等于B,则在以上文件中插入“A >= B”否则插入“A < B”,最后用cat打印以上文件

实验2.2

  1. 与电脑猜数,令游戏机随机产生一个100以内的正整数,如果输入大输出“Guess big”,如果输入小输出“Guess small”,猜中则输出“Bingo!”,为脚本myscript-1.sh
  2. 梯式计价,输入价格为x,当输入小于0时,输出“Input error”;输入大于0小于15时,输出结果为4x/3,当输入大于15时,输出结果为5x/2-8,为脚本myscript-2.sh
  3. 四种商品,分别是薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),单价分别对应为3.0元/公斤、2.5元/公斤、4.0元/公斤、3.5元/份。

显示为:

[1] crisps

[2] popcorn

[3] chocolate

[4] cola

[0] exit

用户可以输入编号1~4查询对应食品的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为error。

每个输入,在一行中按格式“price = 价格”输出查询结果,当用户连续查询次数超过5次、或主动输入0时,程序结束,显示“Thanks”。

为脚本myscript-3.sh

实验2.3

  1. 计算1~100内所有整数合,为脚本myscript-4.sh
  2. 计算1~100内所有奇数合,为脚本myscript-5.sh
  3. 计算非负整数阶乘的简单函数,使得可以利用该函数,求1!+2!+…+n!的值。
  4. 某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?
    输入在一行中给出一个正整数n。按照”men = cnt_m, women = cnt_w, child = cnt_c”的格式;输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。
    为脚本myscript-6.sh

实验2.4

  1. 编写一个Shell函数,该函数接收一个UID作为参数,并根据UID显示对应用户名。为脚本myscript-function.sh

四、实验结果测试

1.对于实验2.1中六个步骤的要求,统一存放在myscript-test.sh文件中,代码和结果如图1所示。

图1

实验2.2

  1. 与电脑猜数,令游戏机随机产生一个100以内的正整数,如果输入大输出“Guess big”,如果输入小输出“Guess small”,猜中则输出“Bingo!”,为脚本myscript-1.sh。本子实验的代码和运行结果如图2所示。
图2

(2)梯式计价,输入价格为x,当输入小于0时,输出“Input error”;输入大于0小于15时,输出结果为4x/3,当输入大于15时,输出结果为5x/2-8,为脚本myscript-2.sh。本子实验的代码如图3所示,运行结果如图4所示。

图3

图4

(3)四种商品,分别是薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),单价分别对应为3.0元/公斤、2.5元/公斤、4.0元/公斤、3.5元/份。

显示为:

[1] crisps

[2] popcorn

[3] chocolate

[4] cola

[0] exit

用户可以输入编号1~4查询对应食品的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为error。

每个输入,在一行中按格式“price = 价格”输出查询结果,当用户连续查询次数超过5次、或主动输入0时,程序结束,显示“Thanks”。

为脚本myscript-3.sh. 本子实验的代码如图5所示,运行结果如图6所示。

图5

图6

实验2.3

  1. 计算1~100内所有整数合,为脚本myscript-4.sh

2.计算1~100内所有奇数合,为脚本myscript-5.sh本子实验(1)和(2)的代码和运行结果如图7所示。

图7

(3)计算非负整数阶乘的简单函数,使得可以利用该函数,求1!+2!+…+n!的值。本子实验的代码和运行结果如图8所示。

图8

(4)某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?

输入在一行中给出一个正整数n。

按照”men = cnt_m, women = cnt_w, child = cnt_c”的格式;

输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。

为脚本myscript-6.sh本子实验的代码和运行结果如图9所示。

图9

实验2.4

(1)编写一个Shell函数,该函数接收一个UID作为参数,并根据UID显示对应用户名。为脚本myscript-function.sh本子实验的代码和运行结果如图10所示。

图10

Avatar photo

李星海

简介: 2025-今 浙江农林大学 | 2022-今 广州白蓝碗蛋科技有限公司 | 2022-2024 广州商学院 | 2019-2022 广东工贸职业技术学院 | 服务宗旨:心始至客,行亦致远。