17.shell流程控制
1)if 判断
(1)方法一
if [ 条件判断式 ];then
程序
fi
扩展语法:
if [ command ];then
程序
elif [ command ];then
程序
else
程序
fi
(2)方法二(推荐使用)
if [ 条件判断式 ]
then
程序
elif [条件判断式]
then
程序
else
程序
fi
注意事项:[ 条件判断式 ],中括号和条件判断式之间必须有空格
推荐使用第二种方式
(3)案例:请编写一个shell 程序,如果参数大于85输出”优秀”,如果输入的参数大于等于 60,则输出 "及格了",如果小于 60则输出 "不及格"
编辑脚本:
if [ $1 -ge 85 ]
then
echo "优秀"
elif [ $1 -ge 60 ]
then
echo "及格"
else
echo "不及格"
fi
测试结果:
2)case语句
基本语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
案例:请编写一个shell 程序,如果输入的参数=1输出”星期一”,如果参数=2输出 "星期二",其它情况输出"other"
编辑脚本:
!/bin/bash
case $1 in
"1")
echo "星期一"
;;
"2")
echo "星期二"
;;
*)
echo "other"
;;
esac
执行结果:
3)for循环
(1)方法一(轮寻)
for 变量 in 值1 值2 值3…
do
程序
done
案例 1 :打印1 2 3 4 5
编辑脚本
!/bin/bash
for i in 1 2 3 4 5
do
echo "$i"
echo "====="
done
执行结果:
案例2 :打印命令行输入的参数 【会使用到$* $@】
编辑脚本:
!/bin/bash
for i in "$*"
do
echo "$i"
done
echo "=============="
for i in "$@"
do
echo "$i"
done
执行结果:
备注:如果”$*”不加””,也可以输出”$@”一样的效果
(2)方法二(判断)
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
案例 1 :从 1 加到 100 的值输出显示
编辑脚本:
!/bin/bash
SUM=0
for (( i=1;i<=100;i++))
do
SUM=$[ $SUM+$i ]
done
echo "sum=$SUM"
执行结果:
4)while 循环
基本语法:
while [ 条件判断式 ]
do
程序
done
案例1:从命令行输入一个数 n,统计从 1+..+ n 的值是多少?
编辑脚本:
!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[ $SUM+$i ]
i=$[ $i+1 ]
done
echo “sum=$SUM”
执行结果: