条件表达式
判断和分支语句
循环语句
函数
1. 条件表达式
$ test 10 -gt 5 // 算数表达式 10>5
$ echo $? //显示上述表达式的运行结果,0
$ [ 10 -lt 5 ] //算数表达式 10<5,方括号与10、5之间有空格
$ echo $? //显示上述表达式的运行结果,1
2. 条件和分支语句
使用编辑器vi编辑下列shell脚本
(1) 判断输入的用户名是否为当前用户名
#!/bin/bash
echo -n "Enter your login name: "
read name
if [ "$name" = "$USER" ]; //if和[之间有空格,[和”之间也有空格
then //空四格
echo "Hello, $name. How are you today ?" //再空四格
else
echo "You are not $USER, so who are you ?"
fi //对齐if
将上述脚本保存至test_uf.sh,运行该脚本
$ bash test_uf.sh zhangs
(2) 判断当前所处的时间
#!/bin/bash
hour=`date +%H`
case $hour in
0[1-9] | 1[01] )
echo "Good morining !!"
;;
1[2-7] ) 1
echo "Good afternoon !!"
;;
* )
echo "Good evening !! "
;;
esac
将上述脚本保存至文件test_case.sh,运行该程序
$ bash test_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 " The smallest number is: $smallest"
将上述脚本保存至 test_for.sh,运行该脚本
$ bash test_for.sh // 观察运行结果
(2) 计算1到100之间整数的和
#!/bin/bash
i=1
sum=0
while [ $i -le 100 ]
do
sum=`expr $sum + $i`
i=`expr $i + 1` //有空格,看书P76
done
echo The sum is $sum
将上述脚本保存至文件test_while.sh,运行该脚本
$ bash test_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.sh 10 36 //观察运行结果,最后不要忘记输入两个整数进行比较
5. 思考题
-
函数内的$1,$2与函数外的$1,$2有何区别
-
给出本地变量的作用域