一、实验目的
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,有以下要求
- 用read输入一个name变量,并提示“Please enter a file name:”
- 判断name变量是否为空,如果为空则输出“Name error”并退出,否则输出“Name check correct”(键盘输入data)
- 判断是否存在以上文件,如果不存在输入出“Without this file, creating…”并创建以上文件,如果存在则输出“File already exists”
- 用read输入一个A变量,并提示“Please enter the size of A:”
- 用read输入一个B变量,并提示“Please enter the size of B:”
- 比较A和B的大小,如果A大于等于B,则在以上文件中插入“A >= B”否则插入“A < B”,最后用cat打印以上文件
实验2.2
- 与电脑猜数,令游戏机随机产生一个100以内的正整数,如果输入大输出“Guess big”,如果输入小输出“Guess small”,猜中则输出“Bingo!”,为脚本myscript-1.sh
- 梯式计价,输入价格为x,当输入小于0时,输出“Input error”;输入大于0小于15时,输出结果为4x/3,当输入大于15时,输出结果为5x/2-8,为脚本myscript-2.sh
- 四种商品,分别是薯片(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~100内所有整数合,为脚本myscript-4.sh
- 计算1~100内所有奇数合,为脚本myscript-5.sh
- 计算非负整数阶乘的简单函数,使得可以利用该函数,求1!+2!+…+n!的值。
- 某工地需要搬运砖块,已知男人一人搬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
- 编写一个Shell函数,该函数接收一个UID作为参数,并根据UID显示对应用户名。为脚本myscript-function.sh
四、实验结果测试
1.对于实验2.1中六个步骤的要求,统一存放在myscript-test.sh文件中,代码和结果如图1所示。

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

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


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

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

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