Linux Chapter2 Exercise
本科时期Linux 程序设计的实验文档整理。
一.实验内容
1、 编写shell程序,使用位置参数方法,输入10个学生成绩,判断学生成绩的等级:90分以上为A,小于90大于80分为B,小于80大于70位C,依次类推为D,小于60分为不及格。
实验结果截图:

shell文件代码:
1 | #!/bin/bash |
2、 编写shell程序,输入一个参数,判断输入的参数是文件还是文件夹,如果是文件,则显示出文件内容,如果是文件夹,则列出该文件夹中的文件。
实验结果截图:
当用户输入为文件:
当用户输入为目录:
shell文件代码:
1 | #!/bin/bash |
3、 使用for循环将某一个文件夹下的文件和目录移动到回收站中。
rm命令会直接删除文件而不是把文件放进回收站,且删除以后基本无法恢复。所以要将一个文件夹下的文件和目录移动到回收站,需要把rm命令改为mv命令。
我先是新建了一个testdir作为测试的目录,然后在testdir中有新建了两个目录和一个txt文件。
运行linux2T3的shell文件,输入要删除的目录:
接下来进入回收站检查一下,发现文件夹已经不再原位置了,里面的子文件夹和文件也都被移动到了回收站中:
实现结果截图:
shell文件代码:
1 | #!/bin/bash |
4、 用for语句计算表达式1-1/2+1/3-1/4+….-1/n的值,n由键盘输入,小数点位数保留4位。
实现结果截图:
shell实现的代码:
1 | #!/bin/bash |
5、 使用循环语句编写程序输入密码,三次以内输入了正确密码,显示密码正确,进入系统,输错密码超过三次以上退出程序。
实验的时候特意用“stty -echo”让密码输入像ubuntu密码输入那样不显示出来。
实现结果截图:
当三次密码输入都错误时:
当密码输入正确成功进入系统:
shell文件代码:
1 | #!/bin/bash |
二.实验总结
虽然已经了解shell基本的语法了,但是在实际操作中还是遇到了这样那样的细节方面的错误。
下面我把我遇到的一些错误进行了整理:
1.未预期的符号 “then” 附近有语法错误
遇见"未预期的符号"这种问题时,很多时候都是细节上出现了问题,比如说忘记了空格之类的。
2.shell (standard_in) 1: systax error 报错
遇见这种错误就是有非常低级的语法错误…比如说变量名不一致,比如说混淆了shell最基本的
算术比较和字符串比较,而下面我在第4题中同时犯了两个这样的错误…
3.linux2T5: 行 25: 语法错误: 未预期的文件结尾
遇到这种情况是因为if后面没有加上fi。
三.实验感想
shell本身的逻辑和以前学的各种语言都没什么区别,我觉得它真的很方便。这次作业题不难,但是在这次做作业的过程中我的习惯一时半会儿还改不过来,比如说总是忘记空格,比如说总是忘记在if后面加上fi,总是忘记在引用变量时在前面加上$的符号。
做第五题输入的时候抑或了半天,找了半天bug,逻辑没错代码没错为什么输入正确的密码还不让我进入系统呢…最后发现我的pswd变量和rightStr变量前面没有$…
以后如果有机会用熟练linux了应该就不会总出现这样的问题了。