实验4 shell 程序设计
1.采用shell编程语言(类似C语言),完成
(1)请用C语言编写程序,将1-100之间能被3或7整除的数显示出来.
实验结果:
student@linux-suse:~> ./homework1.sh
3 6 7 9 12 14 15 18 21 24 27 28 30 33 35 36 39 42 45 48 49 51 54 56 57 60 63 66 69 70 72 75 77 78 81 84 87 90 91 93 96 98 99 end!
程序代码:
for ((i = 1; i <= 100; i++))
do
j=$[$i % 3]
if test $j -eq 0
then
fi
done
echo "end!" echo -n $i echo -n " " j=$[$i % 7] if test $j -eq 0 then fi echo -n $i echo -n " " else
(2)请用C语言编写程序,从键盘输入年号,屏幕显示是不是闰年,若是闰年则显不“YES!”否则显示“NO!”。
实验结果:
student@linux-suse:~> ./homework2.sh
清输入年份
2012
yes!
student@linux-suse:~> ./homework2.sh
清输入年份
1995
no!
程序代码:
echo "清输入年份
read year
i=$[$year % 4]
if test $i -eq 0
then
fi echo "yes!" j=$[$year % 100] if test $j -eq 0 then fi echo "yes!" k=$[$year % 400] if test $k -eq 0 then fi echo "yes!" echo "no!" else else else
(3)请用C语言编写程序,将从键盘录入的10个任意数,由低向高排序后显示。
实验结果:
student@linux-suse:~> ./homework3.sh
输入数字
9
输入数字
5
输入数字
8
输入数字
6
输入数字
3
输入数字
2
输入数字
1
输入数字
4
输入数字
7
输入数字
0 1 2 3 4 5 6 7 8 9
--------------------end--------------------
程序代码:
for ((i=0;i<10;i++))
do
echo "输入数字"
read values[i]
done
for ((i=0;i<10;i++))
do
lowest=$i
for ((j=i+1;j<10;j++))
do
if test ${values[j]} -le ${values[$lowest]}
then
lowest=$j
fi
done
temp=${values[i]}
values[i]=${values[lowest]}
values[lowest]=$temp
done
for ((i=0;i<10;i++))
do
echo -ne "${values[$i]}\t"
done
echo -e "\n\n--------------------end--------------------\n"
2编写一个shell脚本文件,文件内包含10个shell命令,然后执行这个脚本文件,察看这些命令自动执行情况(批处理形式)
实验结果:
student@linux-suse:~> ./task2.sh
Tue Jun 5 17:14:31 CST 2012
student
/home/student
hello world! Please input a number
5
数字是 5
奇数
student@linux-suse:~> ./task2.sh
Tue Jun 5 17:14:37 CST 2012
student
/home/student
hello world! Please input a number
6
数字是 6
偶数
程序代码:
date
logname
pwd
echo "hello world! Please input a number"
read number
echo "数字是 $number"
x=$[$number % 2]
if test $x -eq 0
then echo "偶数"
else echo "奇数"
fi
3编写一个shell脚本文件,并用shell编程语言编写一个菜单程序,分别调用作业1中的三个小题。
例如:
shell脚本文件执行后,先在屏幕显示菜单如下:
Please input vour select(0-4):
1.Disply 1.1
2.Disply 1.2
3.Disply 1.3
0.EXit
Select:
当你键入你的选择后,系统就执行相应的程序,完成其指定功能并重新返回到主菜单,若用户键入“0”,则退出该程序。
实验结果:
student@linux-suse:~> ./task3.sh
Please input your select (0-3):
1. Disply 1.1
2. Disply 1.2
3. Disply 1.3
0. Exit
Select:
1
3 6 7 9 12 14 15 18 21 24 27 28 30 33 35 36 39 42 45 48 49 51 54 56 57 60 63 66 69 70 72 75 77 78 81 84 87 90 91 93 96 98 99 end!
student@linux-suse:~> ./task3.sh
Please input your select (0-3):
1. Disply 1.1
2. Disply 1.2
3. Disply 1.3
0. Exit
Select:
2
清输入年份
5214
no!
student@linux-suse:~> ./task3.sh
Please input your select (0-3):
1. Disply 1.1
2. Disply 1.2
3. Disply 1.3
0. Exit
Select:
3
输入数字
4
输入数字
5
输入数字
9
输入数字
8
输入数字
7
输入数字
6
输入数字
3
输入数字
2
输入数字
输入数字
1
0 1 2 3 4 5 6 7 8 9
--------------------end--------------------
student@linux-suse:~> ./task3.sh
Please input your select (0-3):
1. Disply 1.1
2. Disply 1.2
3. Disply 1.3
0. Exit
Select:
程序代码:
echo "Please input your select (0-3):"
echo "1. Disply 1.1"
echo "2. Disply 1.2"
echo "3. Disply 1.3"
echo "0. Exit"
echo "Select:"
read select
case $select in
"0")
break
;;
"1")
./homework1.sh
;; ./homework2.sh ;; ./homework3.sh ;; "2") "3") esac
第二篇:实验四 shell程序设计
实验四:shell程序设计
【实验目的】
(1) 掌握shell的概念,了解shell的工作原理
(2) 熟悉shell环境
(3) 掌握基本的shell程序设计
【实验内容】
1.带一个(目录)参数,可浏览目录下的内容。(lsdir.sh)
实现功能:
(1)首先判断(if)是否带有参数(参考p207),若无则显示(echo)用法信息后,报错返回(exit);
(2)首先判断该参数是不是目录。若是则列目录的内容(ls),否则,提示用户不是目录,则显示警告信息后报错返回。
运行:设程序名为lsdir.sh,为其增加执行权后运行:
./lsdir.sh
./lsdir.sh dir #如果dir是个目录,则列其内容
./lsdir.sh file #若file是文件或不存在则给出警告后返回 #! /bin/bash
if [ $# -ne 1 ] #check if has 1 parameter
then
echo "Usage: $0 dir" #Display Usage
exit 1 #return 1
fi
if [ -d "$1" ] #if is a dir
then
ls -l $1/* #list the dir
exit 0
fi
echo "Warn: $1 is not a directory" #Warning message exit 2 #return 2
2. 只用嵌套结构if-fi实现上述程序 (lsdirif.sh)
#! /bin/bash
if [ $# -ne 1 ]
then
echo "Usage: $0 dir"
exit 1
elif [ -d "$1" ]
then
ls $1/*
exit 0
else
echo "Warn: $1 is not a directory"
exit 2
fi
3、带数值参数,并可计算这些数值参数的和 (sum.sh)
#! /bin/bash
x=0
for y in $*
do
x=`expr $x + $y`
done
echo "The sum is: $x"
4、计算前n个正整数的和 (sum_n.sh)
注:此程序带有1个参数作为整数n,以计算1至n个正整数的和
#! /bin/bash
if [ $# -ne 1 ]
then
echo "Usage: $0 n"
exit 1
fi
x=0
y=1
while true
do
x=`expr $x + $y`
y=`expr $y + 1`
if [ $y -gt $1 ]
then
break
fi
done
echo "1+2+...+$1=$x"
5、编写Shell程序 (setmod.sh),在/home目录下建立10个目录,即user1~user10,并设置每个目录的权限,其中:
(1)文件所有者的权限为:读、写、执行
(2) 文件所有者所在组的权限为:读、执行
(3) 其他用户的权限为:读
#! /bin/sh
i=1
while [ $i -le 10 ]
do
if [ -d /home ];then
mkdir -p /home/user$i
chmod 754 /home/user$i
echo "user$i"
let "i=i+1"
else
mkdir /home
mkdir -p /home/user$i
chmod 754 /home/user$i
echo "user$i"
let "i=i+1"
fi
done
6.编写shell程序(deldir.sh),将第5题建立的10个目录(即user1~user10)自动删除,并显示删除目录信息
#! /bin/bash
i=1
while [ $i -le 10 ]
do
if [ -d /home/user$i ];then
rm -rf /home/user$i
echo "Directory /home/user$i deleted"
fi
let "i=i+1"
done
【实验重点】
1、 掌握shell的概念
2、 熟悉shell环境,掌握基本的shell程序设计
【实验步骤】
【实验总结】
【实验心得】