实验四 shell程序设计: shell控制语句
实验目的
进一步巩固shell程序设计语言基本语法,加深对所学知识理解。
实验内容
要求学生掌握以下内容
(1) 条件表达式
(2) 判断和分支语句
(3) 循环语句
(4) 函数
实验内容
1 条件表达式
$ test 10 -gt 5 // 算数表达式 10>5
$ echo $? //显示上述表达式的运行结果
$ [ 10 -lt 5 ] //算数表达式10<5
$ echo $?
2. 条件和分支语句
使用编辑器vi编辑下列shell脚本
(1)判断输入的用户名是否为当前用户名
#!/bin/bash
echo -n "Enter your login name:"
read name
if [ "$name" ="$USER" ];
then
echo "Hello, $name. How areyou today ?"
else
echo "You are not $USER, sowho are you ?"
fi
将上述脚本保存至test_uf.sh,运行该脚本
$ bash test_uf.shzhangs
(2) 判断当前所处的时间
#!/bin/bash
hour=`date +%H`
case $hour in
0[1-9] | 1[01] )
echo "Good morining !!"
;;
1[2-7] )
echo "Good afternoon !!"
;;
* )
echo "Good evening !! "
;;
esac
将上述脚本保存至文件test_case.sh,运行该程序
$ bashtest_case.sh //观察运行结果
3. 循环语句
(1)计算最小值
#!/bin/bash
smallest=10000
for i in 12 5 18 58 -3 80
do
if test $i -lt$smallest
then
smallest=$i
fi
done
echo " Thesmallest number is: $smallest"
将上述脚本保存至 test_for.sh,运行该脚本
$ bashtest_for.sh // 观察运行结果
(2)计算1到100之间整数的和
#!/bin/bash
i=1
sum=0
while [ $i -le 100]
do
sum=`expr $sum + $i`
i=`expr $i + 1`
done
echo The sum is$sum
将上述脚本保存至文件test_while.sh,运行该脚本
$ bashtest_while.sh
4. 函数
运用函数判断两个数的大小
#!/bin/bash
compare()
{
if [ "$1" -eq "$2" ]
then
return 0
elif [ "$1" -gt "$2" ]
then
return 1
else
return 2
fi
}
compare $1 $2
case $? in
0)
echo "$1 = $2"
;;
1)
echo "$1 > $2"
;;
2)
echo "$1 < $2"
;;
esac
将上述脚本保存至文件test_fun.sh,运行该脚本
$ bash test_fun.sh10 36 //观察运行结果
5. 思考题
1. 函数内的$1,$2与函数外的$1,$2有何区别
函数内的$1和$2是指变量,而函数外的$1,$2则是添加到Shell的各参数值。$1是第1参数、$2是第2参数
若在正则表达式中,匹配出的第1、2、3个子表达式
2. 给出本地变量的作用域
作用域为整个bash进程