九江学院
有两种常用形式:一种是用test命令,如上所示。另一种是用一对方括号将测试条件括起来。两种形式完全等价。例如,测试位置参数$1是否是已存在的普通文件,可写成:test -f \,也完全可写成:[ -f $ l ]
在格式上应注意,如果在test语句中使用shell变量,为表示完整、避免造成歧异起见最好用双引号将变量括起来。利用一对方括号表示条件测试时,在左方括号[之后、右方括号]之前各应有空格。 (四)创建简单shell程序
1、进入VI编辑器 2、编写程序 例: #!/bin/bash hello() {
echo \}
echo \hello
echo \#end
(五)执行shell程序的方法
方法一 : 加执行权后,程序完整路径引导。
方法二 : shell解释器名称引导。 方法三: 点空格引导。 方法四 : 使用命令替换。
五、实验报告要求
1.整理实验结果,使其分别与相应的命令对应
2.记录程序设计的流程
3.根据实验步骤,写出实验报告
36
九江学院
实验七 shell编程(二)
一、实验目的
1、掌握if、case等条件语句的使用 二、实验准备
1、硬件:Intel Pentium 120或以上级别的CPU,大于16MB的内存; 2、软件:Linux RedHat9.0操作系统。 三、相关知识 1. if 语句
if语句通过判断逻辑表达式来作出选择,在bash中的条件语句有如下的格式: if [ expression ]; then statements
elif [ expression ]; then statements else
statements fi
if条件是可以嵌套的, 2. case语句
case语句是用来执行依赖于离散值或是匹配指定变量值的范围的语句。 格式如下: case str in
str1 | str2) statements;; str3 | str4) statements;; *) statements;; esac
三、实验内容及步骤
1、从键盘输入月份,显示当月的日历 read month
if [ $month –ge 1 -a $month -le 12 ] then
cal $month 2010 fi
37
九江学院
2.从键盘传送月份数字后显示月份名或出错信息
read score
case $score in
01 | 1) echo “Month is January”;; 02 | 2) echo “Month is February” ;; 03 | 3) echo “Month is March” ;; 04 | 4) echo “Month is April” ;; 05 | 5) echo “Month is May” ;; 06 | 6) echo “Month is June” ;; 07 | 7) echo “Month is July” ;; 08 | 8) echo “Month is August” ;; 09 | 9) echo “Month is September” ;; 10) echo “Month is October” ;; 11) echo “Month is November” ;; 12) echo “Month is December” ;; *) echo”Invalid parameter” esac
五、实验报告要求
1.记录实验中遇到的问题 2.提出程序的改进方法
3.根据实验步骤,写出实验报告
38
九江学院
实验八Shell编程及图形环境的使用
一、实验目的
1、掌握for、whlie语句的使用 2、掌握图形界面GNOME和KDE的使用 二、实验准备
1、硬件:Intel Pentium 120或以上级别的CPU,大于16MB的内存; 2、软件:Linux RedHat9.0操作系统。 三、相关知识 1.for语句
for curvar in list do
statements done
对list中的每个值需要执行一次statements时应利用这种格式。对每次循环,把list中的当前值赋给变量vcurvar. List可以使含有几个项的变量,或是用空格分隔的值表。 2. while语句
在pdksh和bash 中,利用的如下的格式: while expression do
statements done 三、实验内容及步骤 1. 求前五个偶数的和 参考程序: #!/bin/bash loopcount=0 result=0
while [ $loopcount –lt 5 ] do
39
九江学院
loopcount=‘expr $loopcount +1’ increment=‘expr $loopcount \\*2’ result= ‘$result + $increment’ done
echo \“
2.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。 参考程序: #!/bin/sh i=1
groupadd class1 while [ $i -le 30 ] do
if [ $i -le 9 ] ;then username=stu0${i} else
username=stu${i} fi
useradd $username mkdir /home/$username
chown -r $username /home/$username chgrp -r class1 /home/$username i=$(($i+1)) done
3.编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。 参考程序: #!/bin/sh i=1
while [ $i -le 50 ]
40