文档库 最新最全的文档下载
当前位置:文档库 › Linux上Shell程序设计

Linux上Shell程序设计

Linux上Shell程序设计
Linux上Shell程序设计

深圳大学实验报告课程名称:Linux操作系统

实验项目名称:Linux上shell程序设计学院:计算机与软件学院

专业:

指导教师:冯禹洪

报告人:学号:班级:

实验时间:

实验报告提交时间:

教务处制

一、实验目标:

1. 熟悉vi编辑器的使用

2. 掌握简单的Shell编程

2.1. 掌握Shell变量的使用

2.2. 掌握Shell表达式的使用

2.3. 掌握Shell流程控制语句的使用

3. 熟悉Shell程序的执行和跟踪

二、实验环境与工件

湖边Linux实验室

Fedora 13

三、实验内容与步骤:

准备工作:如果当前系统已经有学生名字加学号命名的账号,则直接以该账号登录,然后转2,一次完成后面的实验内容。

i.创建一个以学生名字加学号命名的账号,不如,学生名字

为张山,学号为123,则操作如下:

#useradd zhangshan123

#passwd zhangshan123

然后以zhangshan123名字登录

ii.在主目录下

a)创建文件夹:ShellProgram

$mkdir ShellProgram

b)进入ShellProgram子目录

$cd ShellProgram

iii.请根据自己对Linux的熟悉程度选做题(一)或题(二)

题(一)

1. 下面哪个命令会实现将变量V AR1和V AR2相加,并且值存入变量V AR3的功能?()(5分)

A.[ $VAR3 = $VAR1 + $VAR2 ]

B.$VAR3 = [ $VAR1 + $VAR2 ]

C.$VAR3 = (( VAR1 + VAR2 ))

D.(( VAR3 = VAR1 + VAR2 ))

2. 以下程序的输出是?()(5分)

#!/usr/bin/sh

A=1

while [ $A -lt 10 ]

do

B=1

while [ $B -lt 10 ]

do

break 2

echo "Inner loop"

done

echo "Outer loop"

done

A.“Inner l oop” 将被打印10次

B.“Outer l oop” 将被打印10次.

C.“Outer l oop” 将被打印10次.

D.什么都没有被打印.

3. 请在vi中逐一编辑,修正(如果有误)并执行以下10个shell脚本程序,然后结合所学知识和程序的输出理解各程序中各语句的含义,对各小题附上结果截图。(每小题5分)

3.1. 编写一个简单的回显用户名的shell程序。

#!/bin/bash

#filename:date

echo "Mr.$USER,Today is:"

echo 'date'

echo Whish you a lucky day!

3.2.使用if-then语句创建简单的shell程序。

#!/bin/bash

#filename:bbbb

echo -n "Do you want to continue: Y or N"

read ANSWER

if [ $ANSWER=N -o $ANSWER=n ]

then

exit

fi

3.3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。#!/bin/bash

#filename:ak

echo -n "please input a score:"

read SCORE

echo "You input Score is $SCORE"

if [ $SCORE -ge 60 ];

then

echo -n "Congratulation!You Pass the examination."

else

echo -n "Sorry!You Fail the examination!"

fi

echo -n "press any key to continue!"

read $GOOUT

3.4.使用case语句创建一个菜单选择的shell程序。

#!/bin/bash

#filename:za

#Display a menu

echo _

echo "1 Restore"

echo "2 Backup"

echo "3 Unload"

echo

#Read and excute the user's selection

echo -n "Enter Choice:"

read CHOICE

case "$CHOICE" in

1) echo "Restore";;

2) echo "Backup";;

3) echo "Unload";;

*) echo "Sorry $CHOICE is not a valid choice

exit 1

esac

3.5.使用for语句创建简单的shell程序。

#!/bin/bash

#filename:mm

for ab in 1 2 3 4

do

echo $ab

done

3.6.使用for语句创建求命令行上所有整数之和的shell程序。

#!/bin/bash

#filename:qqq

sum=0

for INT in $*

do

sum='expr $sum + $INT'

done

echo $sum

3.7.使用while语句创建一个计算1-5的平方的shell程序。

#!/bin/bash

#filename:zx

int=1

while [ $int -le 5 ]

do

sq='expr $int \* $int'

echo $sq

int='expr $int + 1'

done

echo "Job completed"

3.8.使用while语句创建一个根据输入的数值求累加和(1+2+3+4+…+n)的shell程序。#!/bin/bash

#filename:sum

echo -n "Please Input Number:"

read NUM

number=0

sum=0

while [ $number -le $NUM ]

do

echo number

echo "$number"

number=' expr $number + 1 '

echo sum

echo "$sum"

sum=' expr $sum + $number '

done

echo

3.9.使用until语句创建一个计算1-5的平方的shell程序。

#!/bin/bash

#filename:xx

int=1

until [ $int -gt 5 ]

do

sq='expr $int \* $int'

echo $sq

int='expr $int + 1'

done

echo "Job completed"

3.10.使用until语句创建一个输入exit退出的shell程序。

#!/bin/bash

#filename:hk

echo "This example is for test until....do "

echo "If you input [exit] then quit the system "

echo -n "please input:"

read EXIT

until [ $EXIT = "exit" ]

do

read EXIT

done

echo "OK!"

4. 写一个Shell脚本,接收两个文件名作为参数。该脚本将检查两个文件内容是否一样,如果一样就删除第二个文件。请附程序和运行结果截图(5分)

参考代码:

测试:

5. 写一个Shell脚本来检查当前目录中所有文件的可执行权限,如果存在一个文件没有可执行权限,则为其添加可执行权限。请附程序和运行结果截图(5分)

参考代码:

测试:

6. 编写一个shell脚本,输入1 – 10之间的一个数,并判断它是否小于5。请附程序和运行结果截图,请注意程序的易读性。(10分)

7. 编写一个shell脚本,随机输入5个数,打印出了值为3的倍数的所有数。(20分)

题(二)

1.编写shell脚本将当前目录下大于10k的文件转移到/tmp目录下(30分)

# vi 10K.sh

#!/bin/bash

#ext-1

#Using for move currently directory to /tmp

for Filename in $(ls -l |awk '$5 > 10240 {print $9}')

do

mv $Filename /tmp

done

ls -la /tmp

echo "Done!"

2.设计一个Shell程序,在~/data/目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。(30分)

#!/bin/bash

#7.sh

#file executable: chmod 755 7.sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

for ((i=1;i<=50;i++))

do

mkdir -p /usrdata/user$i

cd /usrdata

chmod 754 user$i

done

3.找出系统内大于50k,小于100k的文件,并用长格式显示它们的详细属性.(40分) 四、实验结果

五、实验总结与体会

注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

相关文档